본문 바로가기

백준323

[백준 16568] 엔비스카의 영혼 (C++) https://www.acmicpc.net/problem/16568문제한길이는 수습 마법사이며, 마법사의 영혼을 받기 위해 줄을 서있다. 한길이는 강력한 힘을 얻기 위해 인성을 버렸다. 그리고 최고로 강력한 엔비스카의 영혼을 받기 위해서 새치기를 하기로 결심했다.한길이의 앞에 N명의 사람들이 줄 서있다. 1초가 지날 때마다 줄의 맨 앞 사람은 영혼을 받고 집에 간다. 그리고 1초마다 한길이는 다음과 같은 행동을 할 수 있다.기다리기a명 앞으로 가기 (앞에 최소 a명 있을 때)b명 앞으로 가기 (앞에 최소 b명 있을 때)단, 한길이는 새치기에는 도가 텄기때문에, 모든 행동을 0초만에 할 수 있다.예를 들어 N = 5, a = 1, b = 2라고 하자. 5초동안 기다리기만 하면 줄의 맨 앞 사람이 나가기 때.. 2024. 12. 1.
[백준 17427] 약수의 합 2 (C++) https://www.acmicpc.net/problem/17427문제두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더한 값이고, f(A)로 표현한다. x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값은 g(x)로 표현한다.자연수 N이 주어졌을 때, g(N)을 구해보자. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력첫째 줄에 g(N)를 출력한다. 문제 풀이수학 문제. f(1) = 1 = 1f(2) = 1 + 2 = 3f(3) = 1 + 3 = 4f(4) = 1 + 2 +.. 2024. 11. 30.
[백준 15353] 큰 수 A+B (2) (C++) https://www.acmicpc.net/problem/15353문제두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 A와 B가 주어진다. (0 10000) 출력첫째 줄에 A+B를 출력한다. 문제 풀이문자열 문제. 덧셈 문제이지만 범위가 long long 타입을 넘어서기 때문에 A와 B를 문자열로 입력받아 직접 덧셈을 구현해야 한다. 자릿수가 작은 쪽의 앞에 0을 삽입하여 두 숫자의 자릿수를 맞춘 후, 일의 자리부터 연산을 한다. 해당 자릿수 덧셈이 10이 넘으면 다음 자릿수에 1을 더해주면 되고, 일의 자릿수부터 맨 마지막 자릿수까지 연산을 끝낸 후에는 맨 마지막 자릿수 덧셈이 10이 넘었는지 확인한다. 넘었다면 정답을 저장하는 문자열의 맨 처음에 1을 삽입해.. 2024. 11. 29.
[백준 14569] 시간표 짜기 (C++) https://www.acmicpc.net/problem/14569문제연세대학교 수강신청 기간이 시작되었다. 많은 친구들은 비어 있는 시간에 어떤 과목을 추가로 신청할 수 있는지를 궁금해 한다.이 친구들이 비어 있는 시간에 추가로 신청할 수 있는 과목의 후보 개수를 구해보자.후보 개수를 세는 것이므로 현재 내 시간표에서 신청할 수 있는 과목끼리 시간이 겹치더라도 모두 세어야 한다.즉, 월요일 1, 2, 3, 4, 5교시 시간이 비어 있고 한 과목의 시간이 월요일 1, 2, 3, 4교시이고 나머지 한 과목의 시간이 월요일 2, 3, 4, 5교시라면 2과목 모두 후보가 될 수 있다. 입력연세대학교의 총 과목의 수 N (3 ≤ N ≤ 1000)이 주어진다.N줄에 걸쳐서 각 과목의 수업시간의 수 k (4 ≤ k.. 2024. 11. 28.
[백준 15787] 기차가 어둠을 헤치고 은하수를(C++) https://www.acmicpc.net/problem/15787문제N개의 기차가 어둠을 헤치고 은하수를 건너려고 한다.기차는 20개의 일렬로 된 좌석이 있고, 한 개의 좌석에는 한 명의 사람이 탈 수 있다. 기차의 번호를 1번부터 N번으로 매길 때, 어떠한 기차에 대하여 M개의 명령이 주어진다.명령의 종류는 4가지로 다음과 같다.1 i x : i번째 기차에(1 ≤ i ≤ N) x번째 좌석에(1 ≤ x ≤ 20) 사람을 태워라. 이미 사람이 타있다면 , 아무런 행동을 하지 않는다.2 i x : i번째 기차에 x번째 좌석에 앉은 사람은 하차한다. 만약 아무도 그자리에 앉아있지 않았다면, 아무런 행동을 하지 않는다.3 i : i번째 기차에 앉아있는 승객들이 모두 한칸씩 뒤로간다. k번째 앉은 사람은 k+1.. 2024. 11. 27.
[백준 1497] 기타콘서트 (C++) https://www.acmicpc.net/problem/1497문제강토는 Day Of Mourning의 기타리스트로, 다가오는 공연을 준비하고 있다.어느 날 강토의 집에 도둑이 들어서 기타를 모두 도둑맞고 말았다. 기타를 사야 한다.강토는 공연 때 연주할 노래의 목록을 뽑아 놓았다. 하지만, 하나의 기타로 모든 곡을 연주할 수는 없다. 어떤 기타는 어떤 곡을 연주할 때, 이상한 소리가 나기 때문이다. 항상 완벽을 추구하는 강토는 이런 일을 용납하지 않는다.최대한 많은 곡을 제대로 연주하려고 할 때, 필요한 기타의 최소 개수를 구하는 프로그램을 작성하시오.예를 들어, GIBSON으로 1, 2, 3번 곡을 제대로 연주할 수 있고, FENDER로 1, 2, 5번 곡을 제대로 연주할 수 있고, EPIPHONE.. 2024. 11. 26.
[백준 2828] 사과 담기 게임 (C++) https://www.acmicpc.net/problem/2828문제상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M스크린의 위에서 사과 여러 개가 떨어진다. 각 사과는 N칸중 한 칸의 상단에서 떨어지기 시작하며, 스크린의 바닥에 닿을때까지 직선으로 떨어진다. 한 사과가 바닥에 닿는 즉시, 다른 사과가 떨어지기 시작한다.바구니가 사과가 떨어지는 칸을 차지하고 있다면, 바구니는 그 사과가 바닥에 닿을 때, 사과를 담을 수 있다. 상근이는 사과를 모두 담으려고 한다. 이때, 바구니의 이동 거리의 최솟값을 구하는 프로그램을 작성하시오.입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M 출력모든 사과를 담기 위해서 .. 2024. 11. 25.
[백준 15904] UCPC는 무엇의 약자일까? (C++) 문제UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다.Union of Computer Programming Contest club contestUnion of Computer Programming contest Club contestUnion of Computer Programming contest club ContestUnion of Collegiate Programming Contest club con.. 2024. 11. 24.
[백준 16500] 문자열 판별 (C++) https://www.acmicpc.net/problem/16500문제알파벳 소문자로 이루어진 문자열 S와 단어 목록 A가 주어졌을 때, S를 A에 포함된 문자열을 한 개 이상 공백없이 붙여서 만들 수 있는지 없는지 구하는 프로그램을 작성하시오. A에 포함된 단어를 여러 번 사용할 수 있다.입력첫째 줄에 길이가 100이하인 문자열 S가 주어진다. 둘째 줄에는 A에 포함된 문자열의 개수 N(1 ≤ N ≤ 100)이 주어진다. 셋째 줄부터 N개의 줄에는 A에 포함된 단어가 한 줄에 하나씩 주어진다. A에 포함된 문자열은 알파벳 소문자로만 이루어져 있고, 길이는 100을 넘지 않는다. 출력A에 포함된 문자열로 S를 만들 수 있으면 1, 없으면 0을 출력한다. 문제 풀이dp 문제. dp[i]가 dp[i-1]번째.. 2024. 11. 23.