Algorithm/백준 45

[BOJ] 2839 - 설탕 배달

문제 https://www.acmicpc.net/problem/2839 설탕 공장에서 사탕 가게로 설탕을 배달하는 상근이는 정확하게 nkg를 배달해야 한다. 설탕은 3kg, 5kg 용량의 봉지에 담겨지는데, 최대한 적은 수의 봉지로 배달하고자 한다. 배달해야 하는 설탕 무게를 입력 받아 배달할 봉지의 수를 구하는 프로그램을 작성하라. 두 종류의 봉지로 배달해야 하는 설탕 무게를 만들 수 없다면 -1을 출력하라. 입력과 출력은 다음과 같다. 설탕 무게 봉지 수 18 4 5 * 3 + 3 * 1 4 -1 6 2 5 * 0 + 3 * 2 9 3 5 * 0 + 3 * 3 11 3 5 * 1 + 3 * 2 풀이 남아있는 설탕의 무게가 5의 배수인 경우, 현재 봉지의 수에서 5kg 봉지의 수를 더한 수가 최소 배달..

Algorithm/백준 2022.01.13

[BOJ] 1292 - 쉽게 푸는 문제

문제 https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 1이 한 번, 2이 두 번, 3이 세 번… 그리고 n이 n번 등장하는 수열(1 2 2 3 3 3 4 4 4 4 5…)을 만들고, 특정 구간의 합을 구하는 계산한다. 구간의 시작과 끝을 나타내는 정수 A, B (1 ≤ A ≤ B ≤ 1,000)를 입력으로 받는다. 풀이 수열의 최대 길이가 1000이므로 수열을 직접 구현한 뒤 합을 구한다. 코드 import sys # 수열 구현 ss = [] i = 1 while l..

Algorithm/백준 2022.01.04

[BOJ] 5576 - 콘테스트 / 리스트 컴프리헨션 이차배열

문제 https://www.acmicpc.net/problem/5576 프로그래밍 콘테스트에 W대학과 K대학이 참가한다. 두 대학 모두 10명씩 참가하며, 점수가 가장 높은 3명의 점수를 합해 대학의 점수로 계산한다. W대학의 점수, K대학의 점수를 나타내는 20줄의 입력을 받아 각 대학의 점수를 공백으로 구분하여 출력하는 프로그램을 작성한다. 풀이 1. 각 입력을 10열 2행의 배열로 저장한다. 2. 각 행을 정렬한 뒤 마지막 3개 값을 합한 결과를 출력한다. 소스 코드 import sys s = [[int(sys.stdin.readline()) for _ in range(10)] for _ in range(2)] print(sum(sorted(s[0])[7:]), sum(sorted(s[1])[7:]..

Algorithm/백준 2021.12.30

[BOJ] 2592 - 대표값

문제 https://www.acmicpc.net/problem/2592 열 개의 자연수가 주어질 때 이들의 평균값과, 가장 많이 나타나는 최빈값을 구하은 프로그램을 작성하라 첫째 줄에는 평균을, 둘째 줄에는 최빈값을 출력한다. 최빈값이 둘 이상인 경우에는 그중 하나만을 출력한다. 풀이 1. 열 개의 자연수를 입력받아 배열로 저장한다. 2. 배열 내 값을 키로, 그 값의 개수를 값으로 하는 딕셔너리를 생성한다. 3. 딕셔너리의 키 배열에서, 그 키의 값과 딕셔너리의 값 배열의 최대값이 같으면 해당 키가 최빈값이다. 내 코드 import sys l = [] for i in range(10): l.append(int(sys.stdin.readline())) freq = {x: l.count(x) for x i..

Algorithm/백준 2021.12.24

[BOJ] 11718 - 그대로 출력하기

문제 https://www.acmicpc.net/problem/11718 입력 받은 문자열을 그대로 출력하는 프로그램을 작성하라. 입력은 최대 100줄이며, 한 줄은 알파뱃, 숫자, 공백으로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또한 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다. 풀이 임의의 여러 줄을 입력받아 처리하는 문제이다. 내 풀이 빈 줄이 주어지지 않는다는 점을 이용하여 입력이 공백인 경우, 입력의 끝이라고 간주한다. import sys while True: i = sys.stdin.readline()[:-1] # 개행문자('\n') 제거 if i == "": exit() print(i) 다른 풀이 예외 처리를 이용한다. import sys..

Algorithm/백준 2021.12.20

[BOJ] 9506 - 약수들의 합

문제 https://www.acmicpc.net/problem/9506 어떤 숫자 n이 자신을 제외한 약수의 합과 같으면, 그 수를 완전수라고 한다. ex) 6 = 1 + 2 + 3 n이 완전수인지 아닌지 판단하는 프로그램을 작성하라. 각 줄로 숫자 n을 받고, -1을 입력으로 받으면 프로그램을 종료한다. n이 완전수이면 예시와 같은 형태(6 = 1 + 2 + 3)로 출력하고, 완전수가 아니면 "n is NOT perfect."를 출력한다. 풀이 n을 제외한 약수를 배열에 저장한 뒤, 그 합과 n을 비교한다. import sys while True: n = int(sys.stdin.readline()) # 입력 if n == -1: # 프로그램 종료 break # 약수 구하기 f = [] d = 1 wh..

Algorithm/백준 2021.11.11

[BOJ] 2444번 별 찍기 -7

문제 입력받은 숫자만큼 아래와 같은 모양으로 별을 찍는 프로그램을 작성하라. # 입력 5 # 출력 * *** ***** ******* ********* ******* ***** *** * 풀이 내 풀이 n번째 줄을 기준으로 공백의 수는 늘어나고, 별의 수는 줄어든다. 반복문을 두 번 돌리는 방식으로 문제를 해결한다. import sys n = int(sys.stdin.readline()) for i in range(n): print(" " * (n - 1 - i), "*" * (2 * i + 1), sep="") for i in range(n - 2, -1, -1): print(" " * (n - 1 - i), "*" * (2 * i + 1), sep="") print문이 중복이기 때문에, 중복 코드를 ..

Algorithm/백준 2021.11.05

[BOJ] 2921 - 도미노

문제 https://www.acmicpc.net/problem/2921 1. 두 칸으로 이루어진 도미노 조각이 있다. 각 칸에는 점이 찍혀 있을 수도 있고, 찍혀있지 않을 수도 있다. 2. 점의 개수는 세트의 크기에 의해 결정된다. 세트의 크기가 N인 도미노 세트에서 점의 개수는 0보다 크거나 같고, N보다 작거나 같다. (0 ≤ 점의 개수 ≤ N) 3. 두 개의 도미노 각 칸에 찍힌 점의 개수가 같으면, 두 도미노는 동일하다. 즉, 점이 2개, 8개 찍혀있는 도미노와 점이 8개, 2개 찍혀있는 도미노는 서로 같다. 4. 크기가 N인 도미노 세트는 각 칸의 점의 개수가 N보다 작거나 같은 모든 경우를 포함하고 있다. 중복된 도미노는 없다. 도미노 세트의 크기 N을 입력받아, 도미노 세트에 찍혀 있는 점의..

Algorithm/백준 2021.11.04

[BOJ] 10988 - 팰린드롬인지 확인하기

문제 https://www.acmicpc.net/problem/10988 회문(palindrome)은 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. 알파벳 소문자로만 이루어진 단어를 입력받은 후, 이 단어가 회문인지 아닌지 확인한다. 풀이 기존 풀이 2021.10.07 - [자료 구조] 회문 찾기 / 큐 & 스택 위 글에서 큐와 스택을 이용해 회문 여부를 확인하는 프로그램을 작성했다. 역순 정렬을 이용한 풀이 파이썬에서 리스트는 list.reverse() 또는 reversed(list)를 이용해 역순으로 정렬할 수 있다. list.reverse() : list 자체를 역순으로 정렬하며, 반환 값이 없다. reversed(list) : 역순으로 정렬한 list를 반환한다. 리스트의 정순과 역순을..

Algorithm/백준 2021.10.29

[BOJ] 10886번 0 = not cute / 1 = cute

문제 https://www.acmicpc.net/problem/10886 첫번째 줄은 준희가 귀여운지 아닌지에 대한 설문조사에 참여한 사람의 수의 입력이다. 설문조사를 한 사람은 항상 홀수다. 다음 줄부터는 설문조사 참여자의 의견의 표시하는 정수값을 입력 받는다. 준희가 귀여우면 1을 나타내고, 준희가 귀엽지 않으면 0을 나타낸다. 준희가 귀엽다는 의견이 많으면 Junhee is cute! 를 출력하고, 준희가 귀엽지 않다는 의견이 많으면 Junhee is not cute! 를 출력한다. 풀이 - 내 풀이 0의 개수와 1의 개수를 센 후, 비교 결과에 따라 출력한다. loop = int(input()) y = n = 0 for i in range(loop): if int(input()): y += 1 e..

Algorithm/백준 2021.10.27
1 2 3 4 5