본문 바로가기

반응형

전체 글

(239)
[Python] 백준 2193 이친수 https://www.acmicpc.net/problem/2193 코드 작성 n = int(input()) d = [0, 1, 1] for i in range(3, n+1): d.append(d[i-1]+d[i-2]) print(d[n]) 코드 풀이 #1. d[n] = d[n-1] + d[n-2] i) n-1번째가 0일 경우 n번째 수는 1또는 0 이 된다. 따라서 n-1번째의 경우의 수이다. ii) n-1번째가 1일 경우 n번째 수는 무조건 0된다. 따라서 n-2번째의 1또는 0이 오는 경우의 수와 같다.
[python] 백준 10820 문자열 분석 코드 작성 import sys while True: k = sys.stdin.readline().rstrip('\n') #입력 값 중에서 개행(\n)은 제외한다 if not k: #s가 비어있으면 스톱 break lo, up, di, sp = 0, 0, 0, 0 for i in s: if i.islower(): lo += 1 elif i.isupper(): up += 1 elif i.isdigit(): di += 1 else: sp += 1 print(lo, up, di, sp) 코드 풀이 #1 문제에서 반복문의 조건이 따로 없기 때문에 값이 입력되지 않을 때 while이 멈추도록 한다.\ 입력값은 rstrip('\n') 오른쪽의 개행을 제거하고 한번에 입력한다. 만약 k가 비어있으면 while을 중단한..
[Python] 백준 2004 조합0의 개수 코드 작성 def comb(m,n): #콤비네이션 함수 정의 if n == 0: #mC0의 값은 1이므로 return 1 else: o = 1 for i in range(1, m+1): o = i*o p = 1 for i in range(1, m-n+1): p = i*p q = 1 for i in range(1, n+1): q = i * q return o//(p*q) a,b = map(int, input().split()) z = comb(a,b) #콤비네이션 구하기 cnt = 0 #0의 개수 세기 for i in str(z)[::-1]: if i == '0': cnt += 1 else: print(cnt) break print(comb(a,b)) 코드 풀이 (시간초과) # 0. 위 코드로 푼 이유 및..
[Python] 백준 17087 숨바꼭질 6 코드 작성 import math n,s = map(int,input().split()) k = list(map(int,input().split())) d = [] for i in k: d.append(abs(i-s)) ans = d[0] for i in d: ans = math.gcd(i,ans) print(ans) 코드 풀이 #0. 문제 풀이 이 문제는 수빈이의 위치 점 s부터 동생들의 위치 k에 대해 각각의 최대공약수d를 구하는 문제이다. 즉, (s-k[0]), (s-k[1]), (s-k[2]) 등 에 대해서 최대공약수를 구하는 문제이다. #1. 거리를 d리스트에 입력 n(동생의 수), s(수빈이의 위치), 동생 위치(k)값을 입력받고 각각의 위치를 저장할 d의 리스트를 만든다. 각각의 위치 거리 차..
[Python] 이스케이프 코드 이스케이프 코드는 프로그래밍을 할 때 미리 정의하여 간편한 약어로 사용할 수 있도록 한 문자 조합 백스페이스'\'와 조합하여 사용한다. 키보드에서 엔더 위에 ₩가 같은 기능을 한다. \n : 문자열 안에서 줄 바꿈(₩n) \t : 문자열 사이에 탭 간격(₩t) \\ : 문자 안에 \를 사용할 때(₩₩) \' : 작은따옴표(')를 사용할 때(₩') \" : 큰따옴표(")를 사용할 때(₩")
[Python] 백준 6588 골드바흐의 추측 코드 작성 def pr(n): if n == 1: return False for i in range(2,int(n**0.5)+1): if n%i == 0: return False else: return True import sys while True: n = int(sys.stdin.readline()) if n == 0: break for i in range(2,n): if pr(i) and pr(n-i): print(f'{n} = {i} + {n-i}') break 코드 풀이 #0. 문제풀이 (1) 소수를 검출하는 함수를 정의한다. (2) for문을 이용하여 n값에 대해서 i증가하고, n-i는 점점 감소하면서 숫자를 찾는다. #1. 소수검출(에라토스테네스의 체) n값이 소수(prime number)인..
[Python] 백준 1463 1로만들기 코드 작성 n = int(input()) d = [0] * (n + 1) for i in range(2, n + 1): d[i] = d[i - 1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i // 3] + 1) if i % 2 == 0: d[i] = min(d[i], d[i // 2] + 1) print(d[n]) 문제 풀이 다이나믹 프레그래밍은 전에 했던 루트를 다시 반복하고 새로운 명령어에 한가지 방법을 추가한다. 숫자 10은 3으로 나누어 떨어지지 않기 때문에 10 > 5 > 4 > 2 > 1 순서로(4번) 생각해 볼 수 있지만, 10 > 9 > 3 > 1의 순서로(3번) 나타낼 수 있다. 마찬가지로 9의 값은 9 > 3 > 1로 표현(2번)되며 3의 값은 3 > 1로 ..
[Python] 10808 알파벳 개수 n = input() lst = [0]*26 for i in n: lst[ord(i)-97] += 1 #a~z의 아스키코드는 97~122 for i in lst: print(i, end=' ')

반응형