728x90
반응형

알고리즘/백준 61

[파이썬, 자바] BOJ_1476(날짜 계산)

문제 www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 해설 지구, 태양, 달의 주기가 다르기 때문에 셋 모두의 나머지가 0이 될 때 까지 1년씩 더해줘야 한다. 코드 -파이썬 #백준 1476(날짜 계산) e, s, m = map(int, input().split()) #지구, 태양, 달 cnt = 1 while True: if (cnt - e) % 15 == 0 and (cnt - s) % 28 == 0 and (cnt - m) % 19 == 0: break cn..

알고리즘/백준 2021.04.13

[파이썬, 자바] BOJ_10814(나이순 정렬)

문제 www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 해설 이 문제는 가입한 순서대로 입력이 되기 때문에 나이만 비교하면 된다. 파이썬은 람다식을 이용해 비교를 했고, 자바는 이차원 배열을 이용해 비교를 했다. 코드 -파이썬 #백준 10814(나이순 정렬) n = int(input()) #회원 수 member = [] for _ in range(n): age, name = map(str, input().split()) #회원 나이, 이름 age = int(age)..

알고리즘/백준 2021.04.02

[파이썬, 자바] BOJ_1475(방 번호)

문제 www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 해설 번호가 6이나 9일 때는 둘 중 하나로 값을 몰아주면 계산하기 편하다. 각 해당 번호의 배열 값을 +1 해주고 난 후에는 6, 9 중 값을 몰아줬던 숫자가 짝수인지 홀수인지 판단해야 한다. 짝수라면 세트의 개수가 맞아 떨어질테고 홀수라면 1개 더 필요하기 때문이다. 위의 과정을 모두 끝낸 후엔, 배열의 값 중 최댓값을 찾으면 끝난다. 코드 -파이썬 #백준 1475(방 번호) set = [0] * 9 num = list(map(int, str(input()))) #방 번호 #해당 번호 ++ ..

알고리즘/백준 2021.03.25

[파이썬, 자바] BOJ_11050(이항 계수 1)

문제 www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 해설 이항 계수 구하는 법은 n! / k!(n - k)! 인데 예시를 들어보면(n = 10, k = 4) 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 / 4 * 3 * 2 * 1 * 6 * 5 * 4 * 3 * 2 * 1 이다. 결국 (n - k)! 만큼은 다 날라간다. 남은 부분만큼만 구해주면 된다. 위처럼 직접 계산하지 말고 math.factorial을 사용하는 법도 있다. 코드 -파이썬 #백준 11050(이항 계수 1) from math import ..

알고리즘/백준 2021.03.21

[파이썬, 자바] BOJ_9625(BABBA)

문제 www.acmicpc.net/problem/9625 9625번: BABBA 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했 www.acmicpc.net 해설 처음에 풀 때... B -> BA -> BAB -> BABBA -> BABBAB -> BABBABBA 이렇게 계속 생겨나는 건 줄 알고 풀었다..ㅎ 다시 제대로 문제를 읽어보니 B -> BA로 A -> B로 바뀌는 거였다. 규칙을 정리해보면 A는 이전 B의 개수를 따라가고 B는 이전 A + B의 개수를 따라가는 것을 알 수 있다. 결국 규칙을 한 번 손으로 정리만 해보면 쉽게 풀 수 있는 문제였다. 코드..

알고리즘/백준 2021.03.15

[파이썬, 자바] BOJ_2628(종이자르기)

문제 www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 해설 가로, 세로로 종이를 잘라서 생긴 사각형들 중 가장 큰 사각형 조각을 찾는 문제이다. type이 0이면 가로로 자르는 것이고 1이면 세로로 자르는 것이다. 잘려진 각 사각형의 가로, 세로 길이를 구해 곱해주면 넓이를 구할 수 있다. 더 넓은 조각이 나올 때 마다 resMax 값을 교체해주면 된다. 코드 -파이썬 #백준 2628(종이자르기) x, y = map(int, input().split()) #가로, 세로..

알고리즘/백준 2021.03.09

[파이썬] BOJ_13300(방 배정)

문제 www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 www.acmicpc.net 해설 같은 성별끼리, 같은 학년끼리만 방을 쓸 수 있다는 규칙만 체크하면 그렇게 어렵지 않은 문제이다. 학년별 인원수가 따로 주어지는 게 아니라 인원수 만큼 입력을 통해 주어지기 때문에 입력을 받을 때 마다 리스트에 따로 학년별 인원수를 체크해주는 게 좋다. 리스트에 인원수 체크가 끝나면 한 방에 배정 가능한 최대 인원수로 맞게 떨어지는 지를 체크해야 한다. 학년 별로 배정 인원..

알고리즘/백준 2021.03.04

[파이썬] BOJ_1449(수리공 항승)

문제 www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 해설 물이 새는 곳을 막기 위해서는 앞뒤로 총 1만큼의 간격이 더 필요하다. 시작위치보다 물 새는 위치가 더 뒤에 있을 때 막을 수 있다. 일단 구멍 하나를 막으면, 테이프 길이 - 1(앞뒤 0.5) 위치에 있는 구멍까지 다 막을 수 있다. 그렇기 때문에 시작 위치만 마지막으로 막은 구멍으로 옮겨주면 간단하게 해결할 수 있다. 코드 -파이썬 #백준 1449(수리공 항승) n, l = map..

알고리즘/백준 2021.02.25

[파이썬] BOJ_13305(주유소)

문제 www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 해설 첫 도시에서는 가격에 상관없이 무조건 다음 도시로 이동할 수 있는 양의 기름이 필요하다. 두번째 도시부터는 현재 도시의 주유소 가격이 최소인지를 따지는 것이 필요하다. 그러나 첫 도시부터 가격이 최소인지를 따지게 만들면 코드를 더 간결하게 쓸 수 있다. minOil이라는 최소 가격을 넣을 변수를 선언할 때, 문제에 제시되어 있는 리터당 가격의 최댓값을 넣어두면 모든 도시에 같은 코드를 ..

알고리즘/백준 2021.02.24

[파이썬] BOJ_2720(세탁소 사장 동혁)

문제 www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 해설 각각의 동전의 개수를 최소로 하기 위해선 거스름돈 액수를 각 동전으로 나눈 몫을 개수로 하면 된다. 남은 거스름돈은 또 남은 동전들로 나눠주면 된다. 코드 -파이썬 #백준 2720(세탁소 사장 동혁) coin = [25, 10, 5, 1] t = int(input()) #테스트 케이스 개수 for _ in range(t): case = int(input()) #거스름돈 res = [] for i in coin: res.append(case // i) case = case..

알고리즘/백준 2021.02.23
728x90
반응형