본문 바로가기

코딩테스트/BOJ

(51)
[백준/파이썬] 1769번: 3의 배수 (Python) 문제 www.acmicpc.net/problem/1769 1769번: 3의 배수 문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를 www.acmicpc.net 풀이 - 재귀 - 맨 처음 숫자를 입력받아 리스트에 담아 재귀를 수행하였는데 시간초과가 발생했다. 입력값을 문자열로 받아처리하였더니 시간초과문제 해결 코드 def func(string, cnt): if len(string) > 1: cnt += 1 t = 0 for i in string: t += int(i) func(str(t), cnt) else: if int(string) % 3 == 0: print(cn..
[백준/파이썬] 1712번: 손익분기점 (Python) 문제 www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 풀이 - 수학 - 반복문으로 풀면 시간초과가 뜬다. 코드 a,b,c = map(int,input().split()) if c - b
[백준/파이썬] 10829번: 이진수 변환 (Python) 문제 www.acmicpc.net/problem/10829 10829번: 이진수 변환 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000) www.acmicpc.net 풀이 - 재귀 코드 n = int(input()) arr = [] def recur(n): if n == 1: arr.append(1) elif n // 2 == 1: arr.append(n%2) arr.append(1) else: arr.append(n%2) recur(n//2) recur(n) for _ in range(len(arr)): print(arr.pop(), end='')
[백준/파이썬] 17478번: 재귀함수가 뭔가요? (Python) 문제 www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 코드 n = int(input()) def recur(i, n): print("____"*i + '"재귀함수가 뭔가요?"') if i == n: print("____"*i + '"재귀함수는 자기 자신을 호출하는 함수라네"') else: print("____"*i + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.') print("____"*i + "마을 사람들은 모두..
[백준/파이썬] 2108번: 통계학 (Python) 문제 www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 - 구현 - 최빈값의 경우 딕셔너리를 이용해 각 숫자를 key값에, 해당 숫자의 빈도수를 value값에 담았다 value값이 가장 큰 값의 key들을 배열에 담아 풀었다. - 시간초과는 sys.stdin.readline()을 통해 해결했다 코드 import sys n = int(input()) arr = [] diction = {} for _ in range(n): i = int(sys.stdin.readline(..
[백준/파이썬] 2960번: 에라토스테네스의 체 (Python) 문제 www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 풀이 - 구현 - 에라토스테네스의 체 - 위키백과 코드 n, k = map(int, input().split()) sieve = [True] * (n+1) # 에라토스테네스의 체 초기화 cnt = 0 for i in range(2, n+2): for j in range(i, n+1, i): if sieve[j] == True: sieve[j] = False cnt += 1 if cnt == k: print(j) break
[백준/파이썬] 10773번: 제로 문제 www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 풀이 - 구현 - 리스트의 append()와 pop()이용 [1] append [1,3] append [1,3,5] append [1,3,5,4] append [1,3,5] (0을 불렀기 때문에 최근의 수를 지운다) pop [1,3] (0을 불렀기 때문에 그 다음 최근의 수를 지운다) pop [1,3,7] append [1,3] (0을 불렀기 때문에 최근의 수를 지운다) ..
[백준/파이썬] 2941번: 크로아티아 알파벳 (Python) 문제 www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 풀이 - 구현 - 단어를 리스트로 입력받고, join함수를 이용해 문자열을 비교한다 코드 n = list(map(str, input())) croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] # 크로아티아 알파벳 i, cnt = 0, 0 while True: if ''.join(n[i:i+2]) in croatia..