코테 준비
-
1463. 1로 만들기코테 준비/DP 2023. 1. 3. 21:39
import sys n=int(sys.stdin.readline()) count=0 result=[0]*(n+1) for i in range(2,n+1): result[i]=result[i-1]+1 # 일단 1을 먼저 빼기 if i%2==0: result[i]=min(result[i],result[i//2]+1) if i%3==0: result[i]=min(result[i],result[i//3]+1) print(result[-1]) n=10일때 result를 출력해보면 [0, 0, 1, 1, 2, 3, 2, 3, 3, 2, 3]이다 1. result=[0,0,0,0,0,0,0,0,0,0] # result[0]*(n+1) 2. result=[0,0,1,0,0,0,0,0,0,0] # result[2]=re..
-
1003. 피보나치 (재귀함수와 dp 차이)코테 준비/DP 2022. 12. 29. 23:29
재귀함수로 구현했을 때보다 DP로 구현했을 때 시간이 훨씬 적게 소요된다. def fibonacci(n): if n == 0: print("0") return 0 elif n == 1: print("1") return 1 else: return fibonacci(n‐1) + fibonacci(n‐2) import sys t=int(sys.stdin.readline()) for i in range(t): num=int(sys.stdin.readline()) #피보나치 zero=[1,0,1] one=[0,1,1] if num>=3: for j in range(2,num): zero.append(zero[j-1]+zero[j]) one.append(one[j-1]+one[j]) print(zero[num],o..
-
17219. 비밀번호 찾기 (딕셔너리 시간 단축)코테 준비/Hash map 2022. 12. 29. 17:51
import sys n,m=map(int,sys.stdin.readline().split()) password={} for i in range(n): s,p=sys.stdin.readline().split() password[s]=p for j in range(m): site=sys.stdin.readline().rstrip() print(password[site]) 딕셔너리를 사용하여 list보다 시간을 단축시킬 수 있다
-
17694. 듣보잡 (set 시간 단축)코테 준비/문자열, 내장함수 2022. 12. 28. 19:29
set()를 사용하면 시간 단축을 할 수 있으며, 집합 연산자를 통해 코드를 더 쉽게 짤 수 있다. 연산자 메서드 결과 합집합 a | b set.union(a, b) {1, 2, 3, 4, 5, 6} 교집합 a & b set.intersection(a, b) {3, 4} 차집합 a - b set.difference(a, b) {1, 2} 대칭차집합 a ^ b set.symmetric_difference(a, b) {1, 2, 5, 6} import sys n,m=map(int,sys.stdin.readline().rstrip().split()) hear_name=set() see_name=set() answer=set() for i in range(n): hear_name.add(sys.stdin.rea..
-
11723. 집합 (set 원소 추가, 삭제)코테 준비/문자열, 내장함수 2022. 12. 27. 18:02
s=set() 원소 추가: s.add() 원소 삭제 s.remove() s.discard() discard의 경우 제거하려는 원소가 없어도 오류가 나지 않지만 remove는 에러가 남 import sys m=int(sys.stdin.readline()) s=set() for i in range(m): command=list(sys.stdin.readline().split()) if command[0]=='add': s.add(int(command[1])) elif command[0]=='remove': if int(command[1]) in s: s.remove(int(command[1])) elif command[0]=='check': if int(command[1]) in s: print("1") e..
-
18111. 마인크래프트 (브루투포스) -다시 풀어보기코테 준비/완전탐색 2022. 12. 9. 23:40
import sys n,m,b=map(int,sys.stdin.readline().split()) #b:인벤토리에 있는 개수 craft=[list(map(int,sys.stdin.readline().split())) for _ in range(n)] ans=sys.maxsize height=0 for g in range(257): #땅의 높이는 256 이하 plus=0 # 놓는 블록의 수 minus=0 # 인벤토리에 넣는 블록의 수 for i in range(n): for j in range(m): if craft[i][j]>=g: minus+=craft[i][j]-g else: plus+=g-craft[i][j] if plus