본문 바로가기

그리디37

[백준] 22988번 : 재활용 캠페인 (C++) 22988번 : 재활용 캠페인 문제) 고등학생 때였다. 친구의 손에 이끌려 처음으로 가게 된 화장품 가게는 문을 열자마자 은은한 향기가 코끝을 스치는 곳이었다. 친구를 따라가기에 급급했던 한별이의 발걸음은 이제 누가 말하지 않아도 무언가에 빨려 들어간 듯이 앞을 향했다. 파운데이션을 바르고, 블러셔를 두드리고. 거울을 본 한별이는 처음 보는 자신의 모습에 푹 빠져버렸다. 얼굴에 띈 홍조는 블러셔가 무색해질 정도였다. 그런 기분에 감화된 탓인지 화장품 가게를 나서서 집에 돌아갈 때까지도 거울의 그 모습을 잊을 수가 없었다. 마치 자기가 주목받는 느낌이 들어 볼이 한번 더 붉어져 왔다. 한별이는 이 기분을 다른 사람에게도 전해주고 싶어서 나중에 꼭 화장품 가게를 열겠다고 다짐했다. 그동안 이룬 결실도, 못다.. 2024. 2. 14.
[백준] 18310번 : 안테나 (C++) 18310번 : 안테나 문제) 일직선 상의 마을에 여러 채의 집이 위치해 있다. 이중에서 특정 위치의 집에 특별히 한 개의 안테나를 설치하기로 결정했다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다. 집들의 위치 값이 주어질 때, 안테나를 설치할 위치를 선택하는 프로그램을 작성하시오. 예를 들어 N=4이고, 각 위치가 1, 5, 7, 9일 때를 가정하자. 이 경우 5의 위치에 설치했을 때, 안테나로부터 모든 집까지의 거리의 총 합이 (4+0+2+4)=10으로, 최소가 된다. 입력 : 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,.. 2024. 1. 1.
[백준] 6137번 : 문자열 생성 (C++) 6137번 : 문자열 생성 문제) N개의 문자로 이루어진 문자열 S가 입력된다. 이 문자열의 각 문자들로 새로운 문자열 T를 만들려고한다. 문자열 S로 문자열 T를 만드는 규칙은 다음과 같다. 문자열 S의 가장 앞의 문자 하나를 문자열 T의 마지막에 추가한다. 문자열 S의 가장 뒤의 문자 하나를 문자열 T의 마지막에 추가한다. 위 규칙으로 만들어진 문자열 T들 중 사전순으로 가장 빠른 문자열을 출력하는 프로그램을 작성하시오. 입력 : 첫 번째 줄에 문자열 S의 길이 N이 주어진다. (N > n; for (int i = 0; i > temp; alpha.push_back(temp); } int s = 0; int e = n - 1; string t = ""; while (s 2023. 11. 27.
[백준] 1080번 : 행렬 (C++) 1080번 : 행렬 문제) 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3×3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0) 입력 : 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. 출력 : 첫째 줄에 문제의 정답을 출력한다. 만약 A를 B로 바꿀 수 없다면 -1을 출력한다. 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2.. 2023. 11. 13.