전체 글 165

[BOJ] 16566 카드 게임 (C/C++)

16566번: 카드 게임 첫째 줄에 세 개의 자연수 N, M, K가 주어진다. (1 ≤ M ≤ N ≤ 4,000,000, 1 ≤ K ≤ min(M, 10,000)) 다음 줄에 카드의 번호를 나타내는 M개의 자연수가 주어진다. 각각의 수들은 1 이상이고 N 이하이며 서로 www.acmicpc.net 문제 철수와 민수는 카드 게임을 즐겨한다. 이 카드 게임의 규칙은 다음과 같다. N개의 빨간색 카드가 있다. 각각의 카드는 순서대로 1부터 N까지 번호가 매겨져 있다. 이 중에서 M개의 카드를 고른다. N개의 파란색 카드가 있다. 각각의 카드는 순서대로 1부터 N까지 번호가 매겨져 있다. 이 중에서 빨간색에서 고른 번호와 같은 파란색 카드 M개를 고른다. 철수는 빨간색 카드를 가지고 민수는 파란색 카드를 가진다..

PS/백준 2022.02.22

[BOJ] 1644 소수의 연속합 (C/C++)

1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다. 자연수가 주어졌을 때, 이 자..

PS/백준 2022.02.21

[BOJ] 3273 두 수의 합 (C/C++)

3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는..

PS/백준 2022.02.20

자질구레한 잡기술

(2022-02-19) 1. Visual Studio: 기본 글꼴보다 Consolas가 훨씬 보기 좋음 (도구 -> 옵션 -> 환경 -> 글꼴 및 색) 에서 설정가능 2. Visual Studio: 선택한 영역 한번에 주석 처리 & 제거 (도구 -> 옵션 -> 환경 -> 키보드) 에서 단축키 설정 바꿀 수 있음 Ctrl키 두번씩 누르기 싫어서 주석은 (Ctrl + B), 제거하는건 (Ctrl + G)로 설정 3. VS code, Visual Studio : Ctrl+K 누르고 Ctrl + F 누르면 자동 줄맞춤

etc/memo 2022.02.19

[BOJ] 3665 최종 순위 (C/C++)

3665번: 최종 순위 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에 www.acmicpc.net 문제 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에서는 최종 순위를 발표하지 않기로 했다. 그 대신에 작년에 비해서 상대적인 순위가 바뀐 팀의 목록만 발표하려고 한다. (작년에는 순위를 발표했다) 예를 들어, 작년에 팀 13이 팀 6 보다 순위가 높았는데, 올해 팀 6이 팀 13보다 순위가 높다면, (..

PS/백준 2022.02.19

[BOJ] 1509 팰린드롬 분할

1509번: 팰린드롬 분할 세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다. 분할의 개수의 최솟값을 출력하 www.acmicpc.net 문제 세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다. 분할의 개수의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열이 주어진다. 이 문자열은 알파벳 대문자로만 이루어져 있고, 최대 길이는 2,500이다..

PS/백준 2022.02.18

[19~21일차] 그래도?

계속 프로 문제를 풀고 있다. 정확하게는 문제를 시원하게 풀지 내지는 못하고 계속 도전하고는 있다. 오늘 푼 문제도 분명히 이 정도면 시간제한 안에 들어오겠다 싶었는데 결국 시간 초과를 해결하지는 못했다. VS로 돌려봤을 때에 테스트 케이스를 모두 맞추기는 하지만 마지막 테스트 케이스가 3초 안에 해결되지 않는다. 어차피 1.5초 안에 25개를 다 마치지 못하면 실패니까 거의 의미 없긴 하다. 그래도 오늘은 24/25까지 오는데 큰 어려움이 없었다. 설계를 평소보다 조금 더 꼼꼼히 했더니 확실히 구현하는 것 자체는 크게 어렵지 않았다. 처음에 문제를 봤을 때에는 도저히 답도 안 나왔는데, 갑자기 아이디어가 생각나더니 설계도 금방할 수 있었다. 설계하는 도중에 뭔가 아다리가 딱딱 맞아가길래 조금 설레었다...

[BOJ] 1208 부분수열의 합2

1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. 출력 첫째 줄에 합이 S가 되는..

PS/백준 2022.02.16

[BOJ] 1019 책 페이지

1019번: 책 페이지 첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다. www.acmicpc.net 문제 지민이는 전체 페이지의 수가 N인 책이 하나 있다. 첫 페이지는 1 페이지이고, 마지막 페이지는 N 페이지이다. 각 숫자가 전체 페이지 번호에서 모두 몇 번 나오는지 구해보자. 입력 첫째 줄에 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다. 문제의 지문이 너무 긴 것도 별로지만 너무 짧아도 문제에 손이 잘 안 간다. 심지어 이 문제는 누가 봐도 어떠한 규칙을 찾는 문..

PS/백준 2022.02.15

[18일차] 디버깅 지옥

두번째 프로 문제를 주말 사이에 풀기 시작했다. 원래 시험 시간은 4시간이라 얼마나 걸릴까해서 시간을 재면서 시작했다. 첫번째 시도에서 설계를 어느정도 마치니 거의 한시간이 지나갔다. 그래서 이 정도면 됐다 싶어서 코딩을 시작했는데 코딩 도중에 설계할 때 생각하지 못 했던 예외들이 자꾸 튀어나왔다. 그래서 코드가 덕지덕지돼서 아주 더러워졌다. 그래서 아무리 디버깅을 해도 제대로 돌아가지지 않았다. 심지어 사이트에서 돌려보려고 하니까 메모리 초과... 배열을 너무 크게 잡은게 문제였다... 그래서 자료구조를 뒤엎고 아예 백지에서부터 시작했다. 첫번째 설계에서 부족했던 부분을 보충해서 코드를 작성했다. 조금 더 깔끔해지기는 했지만 여전히 예외가 있었다. 그래도 꾸역꾸역 문제를 찾아내서 마지막엔 25개 중에 ..