일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- dfs
- 정처기
- 삼성 청년 sw아카데미
- 13기
- 파이썬
- 비전공자
- 우테코 7기
- 삼성
- 싸피
- 프리코스
- SSAFY
- 디자인패턴
- 우테코 프리코스
- 코딩테스트
- 싸피 13기
- 삼성 부트캠프
- 마이스터고
- 삼성청년SW아카데미
- 코딩
- 백준
- SWEA
- 취뽀
- 백준 2003
- 코테
- 우테코
- 삼성 청년 SW 아카데미
- 부트캠프
- UML
- 정보처리기사
- 개발자
- Today
- Total
목록백준 (59)
룰루코딩

문제솔루션import sysinput=sys.stdin.readlinen = int(input())li=set()for _ in range(n): name,inout = map(str,input().split()) if inout=="enter": li.add(name) elif inout=="leave": li.remove(name)li = sorted(li, reverse=True)for i in li: print(i)깨달은점처음에 list로 풀었다가 시간초과가 떴다.그래서 set로 바꾸었고set으로 바꿈으로써 li.append대신 li.add 로 바꾸었다.또한 sort()는 리스트 함수이므로 sorted()로 바꾸어서 풀었다. 시간을 더 단축시키기 위..

문제솔루션import sysinput = sys.stdin.readlinen,m = map(int,input().split())dict = {}for _ in range(n): url,pw = input().rstrip().split() dict[url]=pw for _ in range(m): ans= input().rstrip() print(dict[ans])깨달은점어제 푼 이다솜 문제와 유사한데 더 쉬워서 금방 풀었다.https://heesu01.tistory.com/entry/%EB%B0%B1%EC%A4%80-1620-%EB%82%98%EB%8A%94%EC%95%BC-%ED%8F%AC%EC%BC%93%EB%AA%AC-%EB%A7%88%EC%8A%A4%ED%84%B0-%EC..

문제솔루션n,m = map(int,input().split())dict = {}for num in range(1,n+1): po =input() dict[num] = po dict[po] = numfor i in range(m): ans=input() if ans.isdigit(): print(dict[int(ans)]) else: print(dict[ans])깨달은점n,m = map(int,input().split())li=[]for _ in range(n): li.append(input())for _ in range(m): ans = input() if ans in li: print(li.index(i)+1) ..

문제솔루션s = int(input())sum=0cnt=0for i in range(1,s+1): sum+=i cnt+=1 if sum>s: cnt-=1 breakprint(cnt)깨달은점저번에 풀었던 문제랑 비슷해서 금방 알았다. 그리디 알고리즘(실제 최적의 값을 떠나 단계 별로 가장 최고의 값을 골라가는 것)을 이용해서 풀면 된다.주의할 점으로는 if문에서 cnt-=1 을 해줘야한다는 것이다. 이는 카운트를 위에서 한번 했으므로 카운트한 갯수에서 한개를 빼줘야한다. 비슷한 풀이법으로 while문을 이용한 방법도 있다.s = int(input())sum = 0cnt = 0while True: cnt += 1 sum += cnt if sum > s:..

문제솔루션n,k = map(int,input().split())li=[]for _ in range(n): li.append(int(input())) li.sort(reverse=True)cnt=0for i in li: if k>=i: cnt += (k//i) k %= i if k깨달은 점문제를 읽고 동전의 큰 값부터 나누면서 나머지를 저장하는 형식으로 해결했다.이러한 해결법은 그리디알고리즘으로그리디 알고리즘이란 뒷 일은 생각하지 않고 지금 당장 좋은 것만 선택하는 알고리즘이다.(각 단계에서 최적이라고 생각되는 것을 선택 해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘)

문제솔루션import sysinput=sys.stdin.readlines=set()n=int(input())for _ in range(n): cmd=input().split() if cmd[0]=="add": s.add(int(cmd[1])) elif cmd[0]=="remove": s.discard(int(cmd[1])) elif cmd[0]=="check": if int(cmd[1]) in s: print(1) else: print(0) elif cmd[0]=="toggle": if int(cmd[1]) in s: s.discard(int(cmd[1]))..

문제솔루션x = int(input())dp = [0] * 1000001for i in range(2,x+1): dp[i] = dp[i-1] +1 if i % 2 == 0: dp[i] = min(dp[i],dp[i//2]+1) if i % 3 == 0: dp[i] = min(dp[i],dp[i//3]+1) print(dp[x])깨달은 점DP, 즉 다이나믹 프로그래밍(또는 동적 계획법)은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것 dp = [0] * 1000001dp배열을 선언하여 둔다.배열 dp에 저장되는 것은 인덱스 n에 대하여 n을 1로 만드는 최소 연산의 ..

문제솔루션n,m = map(int,input().split())listen=set()see=set()for _ in range(n): listen.add(input())for _ in range(m): see.add(input()) result=[]for i in listen: if i in see: result.append(i)result.sort()print(len(result))for i in result: print(i)깨달은점n,m = map(int,input().split())listen=[]see=[]for _ in range(n): listen.append(input())for _ in range(m): see.append(input()) ..