백준 10815번 - 숫자 카드

백준 10815번 바로가기 나의 풀이 _ = int(input()) sk = set(map(int,input().split())) _ = int(input()) check = list(map(int,input().split())) for i in check: if i in sk: print(1, end=' ') else: print(0, end=' ') CODE REVIEW 두 숫자열을 비교해서 있는지/없는지 판단하는 문제 첫 번째 들어오는 수열을 set() 처리하면 찾는 속도가 개선된다.

2023-5-25 · 1 min · 49 words · Junha

백준 1676번 - 팩토리얼 0의 개수

백준 1676번 바로가기 나의 풀이 num = 1 for i in range(1,int(input())+1): num *= i count = 0 for i in str(num)[::-1]: if i == '0': count += 1 else: print(count) break CODE REVIEW 주어진 n의 팩토리얼을 구하고 뒤에서부터 0의 갯수를 구하는 문제 str(num)[::-1]처럼 num을 str()처리하고 역순으로 바꾸면 더 쉽게 count할 수 있다. cf) ‘갯수’인지 ‘개수’인지 헷갈렸는데, 국립국어원에 따르면 사이시옷을 붙여 쓰지 않은 개수가 맞다고 한다.

2023-5-25 · 1 min · 66 words · Junha

백준 17175번 - 피보나치는 지겨웡~

백준 17175번 바로가기 나의 풀이 x,y=1,1 for i in range((n:=int(input()))-1): x,y=y,(x+y+1)%1000000007 print(1 if n<2 else y) CODE REVIEW 피보나치 수열 함수가 호출되는 횟수를 구하는 문제였다. fibo(n)을 호출하면 fibo(n-1), fibo(n-2)가 호출되므로, 총 횟수는 1(자기자신) + fibo(n-1) + fibo(n-2)로 구할 수 있다. f[n]=1+f[n-1]+f[n-2]로 구현해도 되지만, x,y=y,(x+y+1)로 구현하면 메모리를 아낄 수 있다.

2023-5-25 · 1 min · 49 words · Junha

백준 6571번 - 피보나치 수의 개수

백준 6571번 바로가기 나의 풀이 import sys f = [1,2]+[0]*1002 for i in range(2,1004): f[i] = f[i-1] + f[i-2] for i in sys.stdin: a,b=map(int,i.split()) if a==0 and b==0: break count = 0 for i in f: if a<=i and i<=b: count += 1 print(count) CODE REVIEW 주어진 범위에 해당하는 피보나치 수의 개수를 구하는 문제였다. 시간을 줄이기 위해서 미리 1004개에 해당하는 피보나치 수열을 구하고 범위에 속하는지 판단하는 방식으로 코드를 구현했다.

2023-5-25 · 1 min · 69 words · Junha

백준 9711번 - 피보나치

백준 9711번 바로가기 나의 풀이 f = [0,1,1]+[0]*10002 for i in range(2,10004): f[i] = f[i-1] + f[i-2] for i in range(int(input())): p,q=map(int,input().split()) print(f"Case #{i+1}: {f[p]%q}") CODE REVIEW 실버3 맞나 싶은 문제. 단순히 범위에 맞게 피보나치 수열을 구해주고 출력 형식에 맞추어 print해주면 끝이다.

2023-5-25 · 1 min · 42 words · Junha