728x90
반응형

백준 62

[파이썬, 자바] BOJ_1343(폴리오미노)

문제 www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 해설 XXXX는 AAAA로 XX는 BB로 변경하는 문제이니 문자를 교체해주는 replace() 함수를 사용하면 된다. 교체를 해준 후에도 X가 남아있다면 -1이 답이 되는 것이고, 남아있지 않다면 그대로 바꾼 문자를 출력해주면 된다. 코드 -파이썬 #백준 1343(폴리오미노) board = input() #보드판 board = board.replace('XXXX', 'AAAA') board = board.replace('XX', 'BB') if board.count('X') != 0: print(-1) els..

알고리즘/백준 2021.02.19

[파이썬] BOJ_15903(카드 합체 놀이)

문제 https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 해설 이 문제는 다음과 같은 2가지 과정을 통해 카드 합체를 하는 문제이다. x번 카드와 y번 카드를 골라 그 두 장에 쓰여진 수를 더한 값을 계산한다. (x ≠ y) 계산한 값을 x번 카드와 y번 카드 두 장 모두에 덮어 쓴다. 위와 같은 과정을 m번 거쳤을 때 모든 카드의 합이 최소가 되게 하는 것이 목표이므로, 매번 고르는 x번 카드와 y번 카드는 ..

알고리즘/백준 2021.02.17

[파이썬] BOJ_11399(ATM)

문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 해설 이 문제는 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해야 하는 문제이다. 앞 사람의 시간이 계속해서 더해져 나가기 때문에 앞 사람이 가장 적은 시간만을 사용해야 전체 시간의 합이 최소가 될 것이다. 푸는 방법은 다양하겠지만, 나는 오름차순 정렬을 이용해 풀었다. 정렬 후에는 이중 for문을 이용한다면 쉽게 풀 수 있다. 코드 -파이썬 #백준 11399(ATM) n = int(input()) #사람 수..

알고리즘/백준 2021.02.16

[파이썬, 자바] BOJ_20363(당근 키우기)

문제 https://www.acmicpc.net/problem/20363 20363번: 당근 키우기 첫째 줄에 X와 Y (0 ≤ X, Y ≤ 109)를 의미하는 정수가 공백으로 구분되어 주어진다. www.acmicpc.net 해설 이 문제는 우선 자기가 예시를 만들어서 풀어보는 것이 좋다. 예시를 직접 손으로 풀다보면, 한 가지 풀이 방법에 대한 의문이 생긴다. 그리고 그 의문을 코드로 옮겨보면 풀리는 문제이다. 위의 예시들을 직접 손으로 풀어봤을 때, 온기, 수분의 최소 합을 계산하면 각각 답이 빨간색 글씨 처럼 나온다. 이 것들을 살펴보면, 온기 + 수분 + (min(온기, 수분) / 10) 이 답이 된다는 것을 알 수 있다. 결국 이 계산식 대로만 풀면 되고, 백준에서 제시한 2번째 예시를 실행해보..

알고리즘/백준 2021.02.15

[파이썬] BOJ_1758(알바생 강호)

문제 https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같은 자연수 www.acmicpc.net 해설 팁을 최대한으로 받기 위해서는, 팁을 가장 많이 내는 손님들부터 우선순위로 배치하면 된다. 그러고 나선 문제에 적혀있는대로 원래 주려고 생각했던 돈 - (받은 등수 - 1) 에 따라 계산하면 된다. 코드 -파이썬 #백준 1758(알바생 강호) n = int(input()) #사람 수 tip = [] sum = 0 for i in range(n): tip.insert(..

알고리즘/백준 2021.02.12

[파이썬, 자바] BOJ_2217(로프)

문제 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 해설 적은 중량을 드는 로프는 큰 중량을 드는 로프만큼 들 수 없다. 큰 중량 로프가 적은 중량 로프한테 맞춰줘야 한다. ex) 15, 30 짜리 로프가 있을 때, 15는 30만큼 들 수 없지만 / 30은 15만큼 들 수 있다. 로프가 [3, 5, 10, 15, 30] 있을 때, 30은 -> 30만 들 수 있고(1개) 15는 -> 15, 30(2개) 10은 -> 10, 15, 30(..

알고리즘/백준 2021.02.11

[파이썬, 자바] BOJ_2847(게임을 만든 동준이)

문제 https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 해설 이 문제는 가장 마지막 레벨의 점수가 가장 높도록 만들어야 하는 문제이다. '점수를 내리는 것을 최소한'으로 하려면 가장 높은 점수부터 1점씩만 차이가 나게 하면 된다. 마지막 레벨부터 시작해서 이전 레벨이 다음 레벨보다 점수가 높을 때, 높은 점수 - 낮은 점수 + 1을 해주면 높은 점수에서 빼야 할 점수를 알 수 있다. 코드 -파이썬 #백준 2847(게임을 만든 동준이) n = i..

알고리즘/백준 2021.02.10

[파이썬, 자바] BOJ_2752(세수정렬)

문제 https://www.acmicpc.net/problem/2752 2752번: 세수정렬 숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다. www.acmicpc.net 해설 sorted() 함수를 이용해서 한 줄로 풀 수도 있지만 하나 하나 조건을 따져서 풀어보았다. 코드 -파이썬 #백준 2752(세수정렬) a, b, c = map(int, input().split()) #abc bac cab #acb bca cba if a > b and a > c: if b > c: print(c, b, a) else: print(b, c, a) elif b > a and b > c: if a > c: print(c, a, b) else: prin..

알고리즘/백준 2021.02.08

[파이썬, 자바] BOJ_11256(사탕)

문제 https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 해설 상자의 세로 * 가로의 길이보다 더 많은 사탕을 포장할 수 없다는 건, 상자의 한 칸에 하나의 사탕만 넣을 수 있다는 것을 뜻한다. 상자를 최소한으로 사용한다는 것은, 크기가 가장 큰 상자부터 사탕을 넣는다는 것을 뜻한다. 결국, 세로(r) * 가로(c)의 크기가 가장 큰 상자부터 사탕을 차감해나가면 된다는 것인데 이는 상자마다 세로(r) * 가로(c) 한 값을 리스트에 저장해 내림차순 정리..

알고리즘/백준 2021.02.03

[파이썬, 자바] BOJ_18238(ZOAC 2)

문제 https://www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net 해설 이 문제는 왼쪽 / 오른쪽 중 빠른 쪽의 값을 구하면 된다. 다양한 방법으로 풀 수 있지만 이번에는 아스키 코드 값을 사용해서 풀어보았다. (A ~ Z를 리스트에 담아놓고 푸는 방법을 사용할 수도 있다) 원판을 왼쪽으로 돌릴지, 오른쪽으로 돌릴지에 따라 아스키코드 값을 계산해주면 된다. 주의할 점은, 계산한 값이 음수가 되면 알파벳 개수인 26을 더해줘야 제대로 된 값을..

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