Baby Yoshi Blinking
백준[2231] - 분해합
·
💻 코딩테스트/백준
문제 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 작성한 코드 N = int(input()) result = 0 for i in range(1, N+1): M = list(map(int, str(i))) K = i + sum(M) if K == N: result = i break print(result) (문제 이해가 잘 되지 않아서 문제푸는 방법을 바로 생각해내지 못했다.) - 숫자 N을 입력받는다. - 결과값을 저장할 result를 0으로 초기화시켜준다. - 1부터 N까지(..
백준[2798] - 블랙잭
·
💻 코딩테스트/백준
문제 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 작성한 코드 from itertools import combinations N, M = map(int, input().split()) cards = list(map(int, input().split())) result = 0 for i in combinations(cards, 3): if result < sum(i)
백준 [13305] - 주유소
·
💻 코딩테스트/백준
문제 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 아이디어 : 리터 당 가격이 최솟값인 것을 기준으로 움직인다고 생각하기! : 첫 도시의 주유소의 리터 당 가격을 최솟값으로 시작 → 이후에 이동하다가 해당 가격보다 더 싼 주유소를 발견? → 최솟값 갱신 작성한 코드 N = int(input()) km = list(map(int, input().split())) price = list(map(int, input().split())) total = 0 min_price = price[0] for ..
백준 [1541] - 잃어버린 괄호
·
💻 코딩테스트/백준
문제 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 아이디어 ex) 식이 55 + 50 - 40 + 55 -30 일 때, [공통 아이디어] : (55 + 50) - (40 + 55) - 30 으로 생각하면 된다. → '-' 기준으로 나눈다 가 먼저! [내가 생각한 방법] 1)-를 기준으로 나눠서 +연산들을 다 하고 2)+연산한 값들을 다시 다 빼주면 → 최소값이 나온다! → 55+50, 40+55, 30 으로 나눠서, +있는 것들 먼저 계산 → 105, 95, 30 을 다 빼주기 → 105 - 95 -..
백준 [11399] - ATM
·
💻 코딩테스트/백준
문제 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 아이디어 ex) ATM 기계 앞에 5명이 서있다고 가정했을 때, 1번 2번 3번 4번 5번 돈 뽑는 시간 (분) 3 1 4 3 2 • 1번 → 2번 → 3번 → 4번 → 5번 순으로 줄을 서있을 경우 → 돈 뽑는 데에 필요한 시간의 총 합 : 39분 1번 2번 3번 4번 5번 돈 뽑는 시간 (분) 3 1 4 3 2 기다리는 시간 (분) 3 4 8 11 13 • 2번 → 5번 → 1번 → 4번 → 3번 순으로 줄을 서있을 경우 → 돈 뽑는 데에 필요한 시간의 총 합 : 32분 2번 5번 1..
백준 [1931] - 회의실 배정
·
💻 코딩테스트/백준
문제 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net [아이디어] : 회의가 빨리 끝날수록 뒤에 고려해볼 회의들이 많아진다. → 끝시간 기준으로 오름차순 정렬 필요 : 끝시간이 같을 경우에도 고려를 해주어야 한다. → 시작시간 기준으로 오름차순 정렬 필요 ex) (2,2)와 (1,2)가 있을 때, (1,2) (2,2) 순 이면 → 가능한 회의 개수 = 2 (2,2) (1,2) 순 이면 → 가능한 회의 개수 = 1 작성한 코드 N = int(input()) time = list() for i in range(N): start, end = map(int, input().split()) time.append([start, end]..
백준 [11047] - 동전 0
·
💻 코딩테스트/백준
문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 작성한 코드 import sys input = sys.stdin.readline N, K = map(int, input().split()) money = list() count = 0 for i in range(N): money.append(int(input().rstrip())) money.reverse() for j in m..
백준 [2581] - 소수
·
💻 코딩테스트/백준
문제 작성한 코드 import sys input = sys.stdin.readline M = int(input()) N = int(input()) sosu = list() for i in range(M, N+1): counts = 0 if i >1: for j in range(2, i): if (i%j) == 0: counts += 1 if counts == 0: sosu.append(i) if len(sosu) > 0: print(sum(sosu)) print(min(sosu)) else: print(-1) - sys.stdin.readline을 input에 할당하여 사용한다. - input()으로 문자를 입력받아 int형으로 형변환하여 M과 N에 저장한다. - 나중에 소수들을 저장하기 위해 sosu를..
백준 [1978] - 소수 찾기
·
💻 코딩테스트/백준
문제 작성한 코드 import sys input = sys.stdin.readline N = int(input()) numbers = list(map(int, input().split())) counts = N for i in range(N): if numbers[i] == 1: counts -=1 for j in range(2, numbers[i]): if (numbers[i]%j) == 0: counts -= 1 break print(counts) - sys.stdin.readline을 input에 할당하여 사용한다. - input()으로 문자를 입력받고, int형으로 형변환하여 N에 저장한다. (N은 입력받을 수의 개수) - input()으로 문자를 입력받고, split()으로 구분한 뒤, int형..
백준 [10757] - 큰 수 A+B
·
💻 코딩테스트/백준
문제 작성한 코드 import sys input = sys.stdin.readline A, B = map(int, input().split()) print(A+B) - sys.stdin.readline을 input에 할당하여 사용한다. - input()으로 문자를 입력받고, split()으로 구분한 뒤, int형으로 형변환하여 map()으로 A, B에 각각 할당한다. - pinrt()를 통해 A+B의 값을 출력한다. cf.) 이전에 풀었던 문제인데 왜 다시 등장했는지 궁금해서 찾아본 결과 - 다른 언어에서는 입력값이 지나치게 클 경우 메모리가 터지지만, 파이썬은 오버플로우가 없기 떄문에 터지지 않는다고 한다. *참고 https://ahracho.github.io/posts/python/2017-05-09..
백준 [2839] - 설탕 배달
·
💻 코딩테스트/백준
문제 작성한 코드 import sys input = sys.stdin.readline N = int(input()) sugar = 0 while True: if (N%5) == 0: sugar += (N//5) print(sugar) break if N >= 3: N -= 3 sugar += 1 else: print(-1) break - sys.stdin.readline을 input에 할당하여 사용한다. - input()으로 문자를 입력받고, int형으로 형변환하여 N에 저장한다. (N : kg 수) - 봉지 수인 sugar를 0으로 초기화 시켜준다. - while True: 반복문 while문의 조건을 True로 하여 무한반복 되게 한다. - if (N%5)==0: 만약 N을 5로 나눴을 때 0이라면,..
백준 [2775] - 부녀회장이 될테야
·
💻 코딩테스트/백준
문제 작성한 코드 import sys input = sys.stdin.readline T = int(input()) for i in range(T): k = int(input()) n = int(input()) floor_0 = list() for j in range(1, n+1): floor_0.append(j) for a in range(k): counts = list() for b in range(n): counts.append(sum(floor_0[:b+1])) floor_0 = counts print(counts[-1]) - sys.stdin.readline을 input에 할당하여 사용한다. - input()으로 문자를 입력받고, int형으로 형변환하여 T에 저장한다. (T는 테스트 케이스 개수..
// 코드 블럭 복사