일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 전자 메일
- 구현
- 동적 계획 알고리즘
- 비연결형 통신
- 코딩 테스트
- 5와 6의 차이
- 통나무 건너기
- 대체 암호화
- 소가 길을 건너간 이유3
- 사과 담기 게임
- 나동빈
- DES 알고리즘
- 욱제는 효도쟁이야!!
- 거스름돈
- JoCoding
- 그리디 알고리즘
- 위치 암호화
- 파이썬
- 컬럼 암호화
- Pop
- 세탁소 사장 동혁
- 문자 변환표
- ZOAC 2
- Greedy
- 백준
- 2 + 1 세일
- 키워드 암호화
- 시저 암호화
- 한빛미디어
- 컴퓨터 네트워크
- Today
- Total
목록전체 글 (42)
주니어로서의 백 걸음, 개발자로서의 한 걸음

문제 풀이: 해당 문제는 먼저 소가 도착하는 시간을 기준으로 오름차순 정렬을 한다. 그리고 2가지 경우로 구분해서 풀면 된다. 소가 도착했을 때 기다리지 않고 검문 후 바로 입장하거나 앞에 소가 다 검문을 할 때까지 대기하다가 검문 후 입장하는 경우가 있다. n = int(input()) tmp = [] for _ in range(n): a, b = map(int, input().split()) tmp.append((a, b)) tmp.sort() time = 0 for i in tmp: if time < i[0]: time = i[0] + i[1] else: time += i[1] print(time)

문제 풀이: 삼각형은 어느 한 변의 길이가 나머지 두 변의 길이를 합한 것보다 같거나 길 수 없다. import sys n = int(input()) l = [] for _ in range(n): l.append(int(sys.stdin.readline())) l.sort(reverse=True) a = False for i in range(n-2): if(l[i] < l[i+1] + l[i + 2]): print(l[i] + l[i+1] + l[i + 2]) a = True break if(a == False): print(-1)

문제 풀이: 해당 문제는 이동비용이 가장 큰 마을을 시작으로 순회하면 최소 비용을 구할 수 있다. n = int(input()) town = list(map(int, input().split())) print(sum(town) - max(town))

문제 풀이: 해당 문제는 0 - 1 - 2 - 0 순서로 마셔야 하기 때문에 milk[i]을 cnt를 3으로 나누어준 값으로 비교하면 된다. 만약 milk[i]와 cnt % 3이 같다면 cnt을 1 더해준다. 만약 같지 않다면 마시지 못하기 때문에 지나가고 cnt은 그대로 유지된다. n = int(input()) milk = list(map(int, input().split())) cnt = 0 for i in range(n): if milk[i] == cnt % 3: cnt += 1 print(cnt)

문제 풀이: 최대한 빨리 나무들을 모두 자라게 하려면 오래 걸리는 나무부터 심어야 한다. 따라서 나무들의 일수를 먼저 내림차순 정렬을 한다. 그다음 아래 내용에 따라 새로운 리스트를 만든다. 묘목을 심는 데 걸리는 시간: 1일 묘목이 자라는데 걸리는 시간: tree[i] 몇 번째 나무를 심는지: +i 나무가 다 자란 다음날 이장님 초대: 1일 따라서 새로운 리스트는 tree[i] = tree[i] + i + 1이고 이장님을 초대할 수 있는 날은 (max(tree) + 1) 이다. n = int(input()) tree = list(map(int, input().split())) tree.sort(reverse=True) for i in range(len(tree)): tree[i] = tree[i] + ..

문제 풀이: 해당 문제는 먼저 먹이를 오름차순으로 정렬하고 먹이가 스네이크버드의 길이보다 작거나 같은 경우 스네이크버드의 길이를 1씩 증가시키면 된다. n, l = map(int, input().split()) feed = list(map(int, input().split())) feed.sort() for i in feed: if l >= i: l += 1 print(l)

문제 풀이: 해당 문제는 동적 계획 알고리즘을 이용해서 풀면 된다. 거스름돈을 1원부터 총거스름돈의 액수까지 1씩 증가시키고 각각의 상황에서 2원과 5원을 썼을 때 거스름돈이 최소인 경우를 구하고 거슬러 줄 수 없으면 -1을 출력하면 된다. 예를 들어 거스름돈이 13원인 경우를 보자 처음에 2원짜리 동전을 사용하면 동전을 다 거슬러주지 못하는 상황이 발생한다. 다음으로 5원을 사용하는 경우, 이전에 거스름돈이 8원이었을 때(c [13-5] = c [8], c [8] = 4), 2원짜리 동전 4개 사용됨. 여기에 5원짜리 동전 한 개를 추가하면 13원이 된다. money = int(input()) m = [2, 5] max = 1000000 c = [max] * (money + 1) c[0] = 0 for..

문제 풀이: 해당 문제는 replace함수를 사용할 줄 안다면 쉽게 풀 수 있는 문제이다. 만약 a와 b에 5나 6이 없다면 min, max에 'a + b'의 값이 들어간다. a, b = map(int, input().split()) min = int(str(a).replace('6', '5')) + int(str(b).replace('6', '5')) max = int(str(a).replace('5', '6')) + int(str(b).replace('5', '6')) print(min, max)