본문 바로가기

코딩테스트/BOJ

(51)
[백준/파이썬] 1436번: 영화감독 숌 (Python) 문제 www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 풀이 - 브루트포스 알고리즘 - 숫자를 문자열로 바꾼다음, '666'이 들어있을때마다 카운트를 증가시켜준다 코드 n = int(input()) i, cnt = 100, 0 while True: number = str(i) if number.count('666'): cnt += 1 if cnt == n : print(i) break i += 1
[파이썬/백준] 3040번: 백설 공주와 일곱 난쟁이 (Python) 문제 www.acmicpc.net/problem/3040 3040번: 백설 공주와 일곱 난쟁이 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. www.acmicpc.net 풀이 - 브루트 포스, 완전탐색 - 난쟁이 한 명을 제외한 키의 합을 배열에 담고, 각 배열에서 다른 난쟁이의 키를 뺐을 때, 100이 나오면 되는 문제이다 코드 arr = [int(input()) for _ in range(9)] arr2 = [0 for _ in range(9)] breaker = False for i in range(9): arr2[i] = sum(arr) - arr[i] #..
[파이썬/백준] 1688번: 트로피 진열 (Python) 문제 www.acmicpc.net/problem/1668 1668번: 트로피 진열 민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열 www.acmicpc.net 풀이 - 브루트 포스, 완전탐색 - 왼쪽에서 볼 때와 오른쪽에서 볼때로 나누어 max값은 배열의 끝 값(왼쪽/ 오른쪽)으로 초기화 - 왼쪽에서 볼 때, arr[i+1]이 max값보다 크면 cnt 증가 - 오른쪽에서 볼 때, arr[i]가 max보다 크면 cnt 증가 - 반례 4 1 100 2 99 를 넣어보고나서 문제를 해결할 수 있었다. 코드 n = int(input()) arr = [] for _ in rang..
[백준/파이썬] 2858번: 기숙사 바닥 (Python) 문제 www.acmicpc.net/problem/2858 2858번: 기숙사 바닥 첫째 줄에 상근이네 방의 크기 L과 W을 공백으로 구분하여 출력한다. 만약, 두 수가 다르다면, 큰 수가 L이 되고 작은 수가 W이 된다. 항상 정답이 유일한 경우만 입력으로 주어진다. www.acmicpc.net 풀이 - 브루트 포스, 완전탐색 - 공식 도출을 해야 한다 빨간색 타일의 수(R)은 8이상이고, 갈색 타일의 수(B)는 1이상이기 때문에, 방의 크기는 최소 3*3이다. 방의 크기가 3*3일 경우에, 빨간색 타일의 수(R)는 R = (3*2) + (3-2)*2 가 된다 방의 크기가 3*3일 경우에, 갈색의 타일의 수(B)는 B = (3-2)*(3-2)이다 방의 크기가 4*3일 경우에 빨간색과 갈색 타일의 수는 다..
[Python/백준] 2798번: 블랙잭 (Python) 문제 www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이 - 구현, 완전탐색, 브루트포스 문제 - 모든 경우의 수에 대한 카드 3장의 합을 구하면 쉽게 풀리는 문제이다 코드 a, b = map(int, input().split()) arr = list(map(int, input().split())) maxNum = 0 result = 0 for i in range(a): result = 0 for j in range(i+1,..
[백준/파이썬] 14697번: 방 배정하기 (Python) 문제 www.acmicpc.net/problem/14697 14697번: 방 배정하기 정보 초등학교 6학년 여학생들은 단체로 2박 3일 수학여행을 가기로 했다. 학생들이 묵을 숙소에는 방의 정원(방 안에 있는 침대 수)을 기준으로 세 종류의 방이 있으며, 같은 종류의 방들이 여러 www.acmicpc.net 풀이 - 구현, 부르트 포스 문제 - 3중 for문을 이용해 각 방의 정원의 배수만큼 증가시켜 준다. 각 방에 들어가는 인원의 합과 전체 학생수가 같으면 1출력 코드 a, b, c, n = map(int, input().split()) flag = False for i in range(0, n+1, a): # a배수만큼 증가 for j in range(0, n+1, b): # b배수만큼 증가 for ..
[백준/파이썬] 3084번: 사탕게임 (Python) 문제 www.acmicpc.net/problem/3085 풀이 - 완전탐색/ 브루트 포스 알고리즘 - 열의 사탕을 swap 한 뒤, 행과 열의 사탕 최대개수를 각각 구한뒤 비교한다 - 행의 사탕을 swap 한 뒤, 행과 열의 사탕 최대개수를 각각 구한뒤 비교한다 코드 # 3085번. 사탕게임 # 완전탐색 # 가로 사탕 최대 개수 구하기 def checkrow(a): maxNum = 1 for i in range(0,n): cnt = 1 for j in range(1, n): if (a[i][j] == a[i][j - 1]): cnt += 1 maxNum = max(maxNum, cnt) else: cnt = 1 return maxNum # 세로 사탕 최대 개수 구하기 def checkcol(a): max..
[백준/파이썬] 2503번: 숫자 야구 (Python) 문제 www.acmicpc.net/problem/2503 코드 # 2503번 숫자야구/ 완전탐색 import itertools data = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] num = list(itertools.permutations(data, 3)) n = int(input()) removeCount = 0 for _ in range(n): n, s, b = map(int, input().split()) n = list(str(n)) # int는 리스트가 될 수 없다 removeCount = 0 for i in range(len(num)): strike = ball = 0 i -= removeCount # num[0]부터 조회해야함 for j in ran..