백준 31

백준 #2231

주의할 점 1. 입력이 1, 8 등일때 1같은건 0이 나와야 하고 8같은건 4가 나옴(4+4) 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다..

백준 2023.07.16

백준 #7568

기억할 것 1. 초기값을 1로 설정하기 2. 등호 사용하지 않기(본인하고 똑같은 키와 몸무게인 사람이 count 되는 것 방지) 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의..

백준 2023.07.11

백준 #11650

기억할 것 1. input을 sys.stdin.readline()로 받을 것 2. box.sort(key=lambda x: (x[0], x[1])) 3. print('\n'.join([f"{x[0]} {x[1]}" for x in box])) print('\n'.join([f"{x[0]} {x[1]}" for x in box]))는 리스트 컴프리헨션을 사용하여 box 리스트의 각 요소를 형식에 맞추어 문자열로 변환하고, 그 문자열들을 줄바꿈 문자('\n')로 연결하여 출력하는 코드이다. 해당 코드는 box 리스트의 요소를 반복하면서 각 요소를 문자열로 변환하고, 이들을 리스트로 모아서 [f"{x[0]} {x[1]}" for x in box]로 만든 후, '\n'.join(...)을 사용하여 리스트의 요소..

백준 2023.07.05

백준 #1145

기억할 것 1. 조합을 튜플 형태로 저장 : 모듈 itertools 사용 arr = [a,b,c,d,e] com = list(itertools.combinations(arr, 3)) 2. 최소공배수 구하는 법 : 모듈 math 사용 math.lcm(A,B,C) 문제 다섯 개의 자연수가 있다. 이 수의 적어도 대부분의 배수는 위의 수 중 적어도 세 개로 나누어 지는 가장 작은 자연수이다. 서로 다른 다섯 개의 자연수가 주어질 때, 적어도 대부분의 배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다. 출력 첫째 줄에 적어도 대부분의 배수를 출력한다. 예제 입력 1 복사 30 42 70 35 90 예제 출력 1 복사 210..

백준 2023.07.05

백준 #1181

기억해야할 것 1. lambda 함수를 sorted 함수와 같이 사용할 것. sorted(dic.items(), key=lambda x: x[1]) 다음과 같이 사용하면 딕셔너리의 value 값 기준으로 정렬됨 ! 2. lambda 함수 사용 시 list 안에 tuple 형태로 저장이 되는데, 이를 list 형태로 변환할 것. 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문..

백준 2023.07.03

백준 #10871

기억할 것: map을 쓰면 list() 써줘야 리스트 형태로 입력됨 *list 이런식으로 쓰면 리스트 형태의 원소가 리스트를 벗고 깔끔하게 출력이 됨 문제 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. 출력 X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다. 예제 입력 1 복사 10 5 1 10 4 9 2 3 8 5 7 6 예제 출력 1 복사 1 4 2 3 정답 코드 x, ..

백준 2023.05.27

백준 #2884

기억할 것: 경우의 수만 잘 나누면 어렵지 않은 문제이다. 시간이 넘어갈 때(00시일때, 0분부터 44분일때)만 유념하면 쉬운 문제 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느..

백준 2023.05.25

백준 #2869

틀린 이유: 1. 올림 안 함. 올림은 math의 ceil 함수 꼭 쓰자 2. 반례 5 1 3 있음 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 예제 입력 1 복사 2 1 5 예제 출력 1 복사 4 예제 입력 2 복사 5 1 6 예제 출력..

백준 2023.05.19