본문 바로가기

Algorithm/Brute Force

(153)
(C++) - 백준(BOJ) 2985번 : 세 수 답 www.acmicpc.net/problem/2985 2985번: 세 수 첫째 줄에 정인이가 원래 적어준 등식을 출력한다. 입력으로 주어진 숫자의 순서는 유지해야 하고, 등호 하나와 더하기, 빼기, 곱하기, 나누기 기호 중 하나로 이루어져 있어야 한다. 만약 등식 www.acmicpc.net 아주 간단한 구현, 다해보기(brute force) 문제였습니다. 풀이방법 세 수 a,b,c에 대해 a+b=c 꼴의 수식이 될 수 있지만 a=b+c도 되므로 총 8가지의 경우의 수가 됩니다. Code #include using namespace std; int main(){ double a,b,c; cin >> a >> b >> c; if(a + b == c) cout
(C++) - 백준(BOJ) 1590번 : 캠프가는 영식 답 www.acmicpc.net/problem/1590 1590번: 캠프가는 영식 첫째 줄에 버스의 개수 N과 영식이가 버스터미널에 도착하는 시간 T가 주어진다. 둘째 줄부터 총 N개의 줄에 각 버스의 시작 시각, 간격, 대수가 공백을 사이에 두고 주어진다. 버스의 개수와 각 www.acmicpc.net 예외경우 처리가 중요했던 완전탐색 문제였습니다. 풀이방법 1. 유효한 버스 도착시간의 범위(남은시간) : 영식의 도착시간 - 버스 출발시간 x번째 버스 = 남은시간 / 배차간격 , 나머지가 0이면 그대로 적용 : 나머지가 0이 아니면 +1을 적용 2. 남은시간이 음수라면 버스타지 못하므로 x번째 버스는 0 3. 영식의 도착시간보다 늦게 도착하는 버스의 도착시간 : 버스 출발시간 + 배차 * x번째버스 4. ..
(C++) - 백준(BOJ) 2023번 : 신기한 소수 답 www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수� www.acmicpc.net 간단한 backtracking문제였습니다. 풀이방법 1. 소수인지 판단 소수라면 다음 단계로 간 후 이전 수 * 10 + 1~9까지 대입해서 소수인지 판단 2. depth(n-1)까지 도달했다면 답 vector에 push Code #include #include using namespace std; vector ans; bool isPrime(int num){ for(int i = 2; i*i > ..
(C++) - 백준(BOJ) 14500번 : 테트로미노 답 www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변� www.acmicpc.net 완전탐색(brute force)을 구현해보는 문제였습니다. 풀이방법 : 도형의 종류를 구분하고 이 도형을 구성하는 타일 값들의 합 중 최대값이 답입니다. 도형 1. 2가지의 모양들 중 각 모양에 대한 타일들 합 최대값 반환 도형 2. 1가지 모양에 대한 타일들 합 반환 도형 3. 8가지 모양들 중 각 모양에 대한 타일들 합 최대값 반환 도형 4. 4가지 모양들 중 각 모양에 대한 타일들 합 최대값 반환 도형 ..
(C++) - 백준(BOJ) 18111번 : 마인크래프트 답 https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 높이를 천천히 낮춰가며 최소시간과 가장 높은 높이를 구하는 구현, brute force 문제였습니다. 풀이방법 : 1. 높이 확인 : 최소 높이는 0 최대 높이는 256까지 loop 2. 채워야할 블록개수 지워야할 블록개수 계산 : if(맵의 한 타일에서 높이 - 정한높이가 양수) => 지워야할 블록 개수 else => 채워야할 블록 개수 3. 높이와 걸린 시간 갱신 if(지울 블록의 개수 + ..
(C++) - 백준(BOJ) 1966번 : 프린터 큐 답 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료�� www.acmicpc.net 우선순위 큐, 큐를 사용하는 완전탐색 문제였습니다. Code : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include #include using namespace std; int main(void){ int t; cin >> t; w..
(C++) - 백준(BOJ) 1436번 : 영화감독 숌 답 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조 www.acmicpc.net 간단한 완전탐색 문제였습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include ..
(C++) - 백준(BOJ) 2309번 : 일곱 난쟁이 Brute Force 문제입니다. #include #include #include using namespace std; //a,b 가짜 난쟁이 int a,b,av,bv, sum, cnt; vector D(10); int main() { for (int i = 1; i > D[i]; } for (int i = 1; i