브루트 포스6 [Python] 백준 1038번 : 감소하는 수 https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 💡 문제 풀이 백트래킹인줄 알고 풀었는데 브루트 포스로 풀었다. 조합을 이용해서 각 자릿수 별로 만들 수 있는 모든 값들을 만든다. 정렬을 통해서 감소하는 수를 만들어주고 배열에 넣어준다. 감소하는 수를 담은 배열을 정렬해주면 순서대로 감소하는 수를 찾을 수 있다. ✔️ 느낀 점 보자마자 가장 큰 값은 9876543210 이라고 생각했다. 범위가 생각보다 크지 않아서 모두 담아버린 .. 2022. 8. 5. [Python] 백준 10819번 : 차이를 최대로 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 💡 문제 풀이 브루트 포스 문제이다. permutation으로 6자리의 순열을 만들어 셈을 해준 후 최댓값을 최신화해주면 된다. ✔️ 느낀 점 처음에 어떤 공식을 만들려고 생각했지만 굳이 그럴 필요가 없음을 알게되어서 바로 해결했다. 💻 코드 import sys, itertools input = sys.stdin.readline N = int(input()) arr = list(map(int, input().s.. 2022. 8. 1. [Python] 백준 1182번 : 부분수열의 합 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 💡 문제 풀이 브루트 포스 문제이다. 부분 수열을 만들어서 합이 목표값과 같은지만 확인해주면 된다. itertools의 combination을 사용하면 부분 수열을 쉽게 만들 수 있다. ✔️ 느낀 점 그렇게 어려운 문제는 아니었다. 💻 코드 import sys from itertools import combinations input = sys.stdin.read.. 2022. 7. 31. [C++] 프로그래머스 : 문자열 압축 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 풀이 브루트 포스로 접근했다! 첫 반복문의 최대 반복 회수는 입력받은 문자열의 반만큼인데, 단위가 입력받은 문자열의 길이의 반 이상이라면 압축하는 의미가 없기 때문이다. 다음 반복문에선 비교를 통해서 반복되는지 확인해준다. 같다면 압축 회수(=cnt)를 증가시키고 아니라면 str에 입력해준다. 최종적으론 현재 answer와 str의 길이를 비교해서 .. 2021. 9. 20. [C++] 프로그래머스 : 약수의 개수와 덧셈 https://programmers.co.kr/learn/courses/30/lessons/77884?language=cpp 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 문제 풀이 시작값부터 종료값까지의 약수의 개수만 카운트해주면 되는 문제이다. 느낀 점 입력값의 범위가 매우 작아서 단순한 브루트 포스로 해결할 수 있었다, 쉬운 문제라서 많이 고민하지 않았다. 코드 using namespace std; int solution(int left, int ri.. 2021. 9. 13. [C++] 백준 18111번 : 마인크래프트 https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 문제 풀이 기본적인 브루트 포스 문제이다. 기준이 되는 높이에서 걸리는 시간을 구해서 계속 비교해 가장 작은 값을 출력하면 된다. 입력받을 때 최소 높이와 최대 높이를 구해 놈으로 반복 횟수를 최소화할 수 있다. 최소가 되는 시간이 여러 경우가 있을 수 있어 그 중 가장 높은 높이일 때를 출력해야 한다. (제거 시간 + 쌓는 시간)이 최소 시간과 같을 때도 최신화 함으로 가장 높은 높이를 출력할.. 2021. 8. 30. 이전 1 다음