일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 부트캠프
- 삼성 청년 sw아카데미
- 삼성
- 싸피
- 삼성청년SW아카데미
- 삼성 청년 SW 아카데미
- 백준
- 프리코스
- 우테코 프리코스
- UML
- 우테코
- 비전공자
- 코테
- 마이스터고
- 파이썬
- SSAFY
- 취뽀
- 삼성 부트캠프
- SWEA
- 13기
- 싸피 13기
- 코딩테스트
- 코딩
- 디자인패턴
- 백준 2003
- 개발자
- 우테코 7기
- 정처기
- dfs
- 정보처리기사
- Today
- Total
목록코딩테스트 (59)
룰루코딩

문제솔루션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()) ..

문제 솔루션n = int(input())li = []result=[]for _ in range(n): li.append(list(map(int, input().split())))for i in range(n): cnt=0 for j in range(n): if li[i][0]깨달은 점생각보다 쉬운문제였다.for i in range(n): cnt=0 for j in range(n): if li[i][0]이중 for문을 돌려서 몸무게와 키를 각각 비교하고둘다 클 겨우에만 cnt를 올려서 덩치의 순위를 구할 수 있었다.cnt가 자신보다 덩치가 큰 사람의 수이므로 문제를 확인했을때 cnt+1이 자신의 등수임을 알 수 있다.

문제솔루션t = int(input())for _ in range(t): k= int(input()) n= int(input()) li = list() num = [i for i in range(1,n+1)] for _ in range(k): for j in range(1,n): num[j]+=num[j-1] print(num[-1]) 깨달은 점처음에 문제를 이해하지 못했는데 3층 -> 1 5 15 352층 -> 1 4 10 201층 -> 1 3 6 100층 -> 1 2 3 4이런식으로 그 전층의 그 호수까지의 합이 사람수였다. num = [i for i in range(1,n+1)]이부분은 처음 0층 i호에 사는 사람 수를 리스트에 담..