본문 바로가기

728x90
반응형

백준 write-up

(91)
[백준] 거스름돈 : 5585번 - Python https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net https://ye5ni.tistory.com/66 ===> 참고 문제의 접근 방법 - 거스름돈 개수가 가장 적게 잔돈을 주려면 잡화점에서 가지고 있는 잔돈을 가장 큰 단위부터 거슬러주어야 함. - 타로는 1000엔 지폐를 한 장 냈기 때문에 1000엔에서 타로가 지불해야 할 돈을 빼준 값이 받아야할 잔돈의 값을 의미함. 문제 풀이 방법 타로가 지불해야 할 돈 N엔 입력받기 ..
[백준] 사탕 : 11256번 - Python https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 문제의 접근 방법 포장할 수 있는 사탕의 개수 = 상자의 크기(가로길이 * 세로길이) "상자의 크기를 내림차순으로 정렬" 문제 풀이 방법 테스트 케이스 T개 입력 받기 -> T번만큼 반복문을 돌려 사탕의 개수(J), 상자의 개수(N) 입력 받기 -> N번만큼의 반복문을 돌려 상자의 가로(c)와 세로(r)길이를 입력받아 이 두 값을 곱한 값을 빈 리스트 arr에 저장하기 -> 리스트 arr를 내림차순으로..
[백준] 행복 유치원 : 13164번 - Python https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 문제의 접근 방법 - 인접한 두 사람의 키의 차이를 비교하기 - N명의 사람을 K조로 나누었기 때문에 (N-K)까지의 키 차이를 더하기 내가 막혔던 부분 N명의 사람을 K개의 조로 나누었다는 생각을 못하고, 무조건 인접한 두 사람들의 키 차이가 가장 최소 비용을 산출해낼 수 있다고 생각함. (그래서 두 사람을 한 조에 넣으려고 함) N,K = map(int, input()...
[백준] 생일 : 5635번 - Python https://www.acmicpc.net/problem/5635 5635번: 생일 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제의 접근 방법 - 가장 나이가 많은 사람과 적은 사람을 어떻게 정렬할 수 있을지 - 여러 개의 값을 입력 받아 리스트에 저장하기 내가 막혔던 부분 나이가 많은 사람이라는 것은 내림차순으로 정렬했을 때, 가장 첫 번째 인덱스 값을 의미하고 나이가 적은 사람이라는 거슨 오름차순으로 정렬했을 때, 가장 첫 번째 인덱스 값을 의미한다. 문제 풀이 방법 n명의 학생을 의미하는 n값 입력 받기 -> 나이가 많은 순서대로, 적은 순서대로 정렬할 수 있게 빈 리스트 두 개 arr1, a..
[백준] 동일한 단어 그룹화하기 : 16499번 - Python https://www.acmicpc.net/problem/16499 16499번: 동일한 단어 그룹화하기 첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다. www.acmicpc.net 문제의 접근 방법 단어를 알파벳 단위로 분리해서 정렬한 후 비교하기 -> 먼저 입력받은 문자를 알파벳 단위로 분리해서 정렬하여 저장한 후, 그 분리된 알파벳들을 합쳐서(join) 미리 선언해 둔 빈 리스트 arr에 없다면 추가해주기 ( 이미 입력받은 문자열을 정렬했기 때문에 만약 값이 같다면 arr에 추가하지 않고 넘어가게 되므로, 각기 다른 문자열들만 저장되게 된다 = 단어가 ar..
[백준] 비트 우정지수 : 12782번 - Python https://www.acmicpc.net/problem/12782 12782번: 비트 우정지수 진홍이는 숫자를 좋아한다. 오늘도 숫자를 가지고 놀던 진홍이는 두 숫자의 비트 우정지수를 구해보았다. 비트 우정지수란, 10진법으로 나타낸 두 정수를 이진수로 나타내었을 때, 두 숫자를 같 www.acmicpc.net 문제의 접근 방법 - 이진수 n과 이진수 m을 문자 하나씩 비교해서 문자가 다를 경우를 체크해주기 - n이나 m 둘 중 하나를 기준점으로 삼아서 문자가 다를 경우에 그게 0인지 1인지 체크해서 총 몇 개인지 계산해주기 - 그 두 값중 더 큰 수가 바로 최소 연산횟수! 내가 막혔던 부분 - 기본적인 아이디어를 생각하지 못했음. 내가 생각한 아이디어: 두 수가 같지 않으면 무조건 한 번은 바꿔야 하..
[백준] 이장님 초대 : 9237번 - Python https://www.acmicpc.net/problem/9237 9237번: 이장님 초대 입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 ≤ ti ≤ 1,000,000) www.acmicpc.net 문제의 접근 방법 - 묘목을 구입한 날이 1일: 1부터 시작함을 명심한다. - 묘목 하나를 심는데 걸리는 시간이 1일이기 때문에 다음 묘목을 심을 때는 1씩 늘어난다는 것을 유의. - 이장님은 묘목이 다 자란 후 오시기 때문에 1일이 또 추가됨을 안다. 문제 풀이 방법 심을 묘목의 개수 n개 입력 받기 -> n개의 묘목이 자라는데 걸리는 일수 입력받기 -> 리스트 day..
[백준] 사과나무 : 19539번 - Python https://www.acmicpc.net/problem/19539 19539번: 사과나무 첫 번째 줄에 모든 나무가 갊자가 바라는 높이가 되도록 물뿌리개를 통해 만들 수 있으면 “YES”를, 아니면 “NO”를 따옴표를 제외하고 출력한다. www.acmicpc.net 문제의 접근 방법 - 두 물뿌리개는 반드시 동시에 사용해야 함. 1) 한 나무에 두 물뿌리개를 사용하는 방법 (3만큼 자람) 2) 각각 다른 나무에 사용하는 방법 (1만큼/2만큼 자람) 3) 나무가 없으면 물뿌리개를 사용할 수 없음 (0) 결론1 : 각 나무의 높이들을 더한 값이 무조건 3의 배수가 되어야 함!!! => 어떻게 물을 뿌리든 두 물뿌리개를 동시에 사용하기 때문에 한 번 물을 뿌릴 때마다 3씩 증가하기 때문이다. 나무가 자라나는..

728x90
반응형