728x90
반응형

그리디 24

[파이썬, 자바] 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_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

[파이썬, 자바] BOJ_12782(비트 우정지수)

문제 https://www.acmicpc.net/problem/12782 12782번: 비트 우정지수 진홍이는 숫자를 좋아한다. 오늘도 숫자를 가지고 놀던 진홍이는 두 숫자의 비트 우정지수를 구해보았다. 비트 우정지수란, 10진법으로 나타낸 두 정수를 이진수로 나타내었을 때, 두 숫자를 같 www.acmicpc.net 해설 이 문제는 입력받은 두 이진수를 같게 만드는 최소 횟수를 구하는 문제이다. 두 이진수를 같게 만드는 방법은 두가지가 있다. 하나의 이진수에서 임의의 자리의 숫자를 0 또는 1로 바꾼다. 하나의 이진수에서 서로 다른 자리에 있는 두 숫자의 위치를 바꾼다. 이거 자체를 코드로 표현하려고 하면 어렵다. 머리를 좀 써보면, 이진수1(n)과 이진수2(m)를 문자 하나씩 비교를 해서 문자가 다를..

알고리즘/백준 2021.02.01

[파이썬, 자바] BOJ_14916(거스름돈)

문제 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 해설 이 문제는 백준을 많이 풀어본 사람이라면 여러번 봤을 문제이다. 그만큼 이와 비슷한 문제가 많다. 거슬러 줄 동전의 개수가 최소가 되기 위해서는 더 큰 값의 동전 개수가 최대로 사용되어야 할 것이다. coin이 5원으로 나눠떨어질 때 까지 2원씩 빼주면 된다. 물론 동전 개수는 하나씩 더해주고. 2원씩 빼다보면 coin이 음수가 되는 경우가 생기는데, 그 때가 거슬러 줄 수 없는 경우이므로 "-1"을 출력해주면 된다. 코드 -파이썬 #백준 14916(거스름돈) coin = int(input()) #거스름돈..

알고리즘/백준 2021.01.29

[파이썬, 자바] BOJ_1439(뒤집기)

문제 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 해설 이 문제는 예시를 먼저 보면 이해가 쉽다. 앞 문자와 다른 문자의 개수(파란색)가 짝수일 때와 홀수일 때로 나눠 볼 수 있다. 짝수일 때는 파란색 // 2 = 빨간색 개수이지만 홀수일 때는 이게 성립하지 않는다. 그러나 짝수, 홀수 둘 다 (파란색 + 1) // 2 = 빨간색이 성립한다. 결국 문자가 몇 번 바뀌는지 수만 세서 위의 식대로 계산하면 끝난다. 코드 -파이썬 #백준 1439..

알고리즘/백준 2021.01.28

[파이썬, 자바] BOJ_1783(병든 나이트)

문제 https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 해설 이 문제는 이해하는데 좀 오래걸렸다.. 이해한 후에는 규칙만 찾으면 쉽게 풀 수 있는 문제였다. 문제를 잘 살펴보면 1. 2칸 위로, 1칸 오른쪽 2. 1칸 위로, 2칸 오른쪽 3. 1칸 아래로, 2칸 오른쪽 4. 2칸 아래로, 1칸 오른쪽 이동 횟수 > 4라면 위의 4가지 이동 방법을 모두 한 번씩 사용해야 함. "방문할 수 있는 칸"에는 가장 처음 밟고 있는 칸도 포함. 이라는 것을 알 수 있다. 위의 내용을 잘 생각하며, 그림을 그려서 경우를 하..

알고리즘/백준 2021.01.27

[파이썬, 자바] BOJ_16435(스네이크버드)

문제 https://www.acmicpc.net/problem/16435 16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net 해설 이 문제는 왜 실버5인지 모를만큼 쉬운 문제다. 스네이크버드가 더 이상 먹을 수 있는 과일이 없을때까지 과일을 먹게 만들면 된다. 스네이크버드는 자신보다 작거나 같은 높이에 있는 과일을 먹을 수 있는데, 과일이 주어진 순서대로 먹어야 하는 것은 아니고 그냥 먹을 수 있는 과일을 먹으면 된다. 그렇다면 되도록 가장 낮은 높이에 있는 과일..

알고리즘/백준 2021.01.26

[파이썬, 자바] BOJ_4796(캠핑)

문제 https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 해설 문제를 접하고 처음 생각했을 땐, 대체 어떻게 테스트 케이스가 5, 8, 20인데 답이 14가 나오는지 이해가 안됐었다. 강산이의 휴가 기간이 20일이라 8일이 연속되는 날은 2번 밖에 없다고 생각했기 때문이었다. 이게 아니고 한달(30 혹은 31일) 중 8일이 연속되기만 하면 되는거였다. 이제 다시 풀려고 보면 쉬운 문제였다. 테스트 케이스 5, 8, 20을 생각해보면 1 2 3..

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