ps 32

[백준] 23304 아카라카 (C++)

23304번: 아카라카 주어진 문자열 $S$가 아카라카 팰린드롬이라면, AKARAKA를 출력한다. 만약 그렇지 않다면, IPSELENTI를 출력한다. www.acmicpc.net 2021.11.05 기준 실버 2 문제이다. 재귀 함수를 연습해보기에 괜찮은 문제라 생각된다. 문제는 문자열이 하나 주어지고, 그 문자열이 '아카라카 팰린드롬'인지 확인하는 문제이다. 다음 두 조건을 모두 만족해야 '아카라카 팰린드롬'이다. 풀이 재귀함수 rec를 이용하여 문자열이 아카라카 팰린드롬인지 확인하였다. 재귀 함수 rec는 다음과 같다. bool rec(string x) { // 문자열 x가 아카라카 팰린드롬이면 true를 리턴 if (x.size() == 1) return true; string l, r; ll tm..

PS/백준 2021.11.05

[백준] 23061 백남이의 여행 준비 (C++)

23061번: 백남이의 여행 준비 1번 배낭이 담을 수 있는 무게는 20이고, 담을 수 있는 최대 가치는 34이므로 효율성은 1.7이다. 2번 배낭이 담을 수 있는 무게는 21이고, 담을 수 있는 최대 가치는 37이므로 효율성은 약 1.76이다. 3 www.acmicpc.net 12번 제출해서 겨우 맞춘 문제이다... 최근에 많이 풀었던 유형의 문제라서 풀이는 바로 알아냈다. 그런데도 12번이나 풀었다. 결론부터 말하면 메모리 초과로 매우매우 고생했다. 혹시 비슷한 고민을 하시는 분이 있을까 봐 풀이의 하단에 메모리 초과를 해결한 방법을 기록해두었다! (실제로 채점 현황을 보면 한 페이지에 한 분 꼴로 메모리 초과가 나는 것을 볼 수 있다...ㄷㄷ) 문제 이해는 어렵지 않다. 물건 N개가 있고 각각 무게..

PS/백준 2021.11.03

[백준] 플래티넘 달성 후기

2021년 10월 17일 새벽 05:00:16 드디어 solved.ac 기준 플래티넘(Platinum V)을 찍었다!! 저번 SUAPC 팀명이 '협곡에서는 플래티넘인 내가 코딩실력은 실버?!' 였는데, 이제는 둘 다 플래티넘이다. 물론, 문제 푸는 실력은 골드도 안되는 것 같지만... (후기는 시험이 끝나고 이어서 작성할 예정입니다... 일단 자랑하고 싶었어요 아 ㅋㅋ) (2021년 10월 30일 추가완료) 글은 그냥 생각나는 대로 쓰는 거라 아무 흐름도 없을 예정이다 ㅎㅎ solved.ac CLASS 솔직히 얘기하면 플래티넘을 찍기 위해 solved.ac에서 날먹아닌날먹을 조금 했다. 골2부터 플래티넘까지는 CLASS를 깨면서 남들보다 점수를 꽤나 쉽게 올렸다. solved.ac에서 CLASS1~5를 ..

PS/후기 2021.10.30

[백준] 23239 당근 밭 (C++)

23239번: 당근 밭 입력은 표준입력을 사용한다. 첫 번째 줄에 마구간의 크기와 줄의 길이를 나타내는 3 개의 양의 정수 $w$, $h$, $L$ ($1 \le w, h, L \le 100,000$)가 주어진다. www.acmicpc.net ICPC Seoul Regional 2021 예선 B번 문제이다. 현재 solved.ac 기준 난이도는 플래티넘 V이며 개인적으로 쉽지 않았던 문제이다. 마구간의 가로(w), 세로(h)의 길이가 주어지고, 말을 묶은 줄의 길이(L)이 주어질 때, 말이 먹을 수 있는 당근의 개수를 구하는 문제이다. 줄은 마구간의 왼쪽 아래 모서리(0,0)에 묶여 있다. 당근은 마구간을 제외한 (정수, 정수) 점들에 위치해 있다. 마구간의 테두리에는 당근이 없음을 주의해야한다. 풀이 ..

PS/백준 2021.10.25

[백준] 23247 Ten (C++)

23247번: Ten A real estate company IC is managing a rectangular section of land. The section is divided into $mn$ segments in $m \times n$ matrix shape, where the number of rows and that of columns are $m$ and $n$, respectively. Each segment has its own price as a posi www.acmicpc.net 지난 토요일에 참가한 ICPC Seoul Regional 2021 예선 J번 문제이다. 대회 중에 맞췄었던 문제이다. 대회 때 내가 풀어서 기분 좋아서 풀이를 올려본다! 문제를 간단히 요약하면... 위 ..

PS/백준 2021.10.13

[백준] 2206 벽 부수고 이동하기 (C++)

2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 이 문제는 지난 여름 신촌 연합 알고리즘 캠프 DFS,BFS 수업에서 다룬 문제이다. 강사님께서 문제를 푸는 아이디어만 던져주시고 넘어간 문제이다. 수업이 끝나고 문제를 풀어보았을 때에는 구현이 쉽지 않아서 풀지 못했다. 최근 캠프 때 풀지 못했던 문제들을 풀고 있는데, 이 문제도 드디어 해결하였다!! 풀이 입력을 받고 bfs를 통해서 1,1에서부터의 최단거리를 구하는 방식으로 문제를 해결하였다. 이 문제의 특이한 점은 벽을 1번 부신다..

PS/백준 2021.09.10

[백준] 15650 N과 M(2) (C++)

15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net solved.ac의 CLASS 4에 있는 문제이다. 문제를 풀고 나서, 사람들의 코드를 보았는데 꽤 깔끔하게 잘 푼 것 같아서 기록해본다.(설명은 다른 분들보다 훨 못하는 것 같다...) 예전에 재귀를 처음 배울 때 건드렸 보았던 문제인데, 그 땐 풀다가 포기했었다. 오늘 보니까 꽤 잘 풀렸다. 실력이 는 것 같다 ㅎㅎ (아님 말고) 풀이 재귀함수를 이용하여 문제를 해결하였다. 재귀함수의 input값은 idx와 cnt이다. idx는 살펴보기 시작할 인덱스를 의미..

PS/백준 2021.09.10

[백준] 14502 연구소 (C++)

14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net solved.ac 클래스 4에 있는 문제이다. 문제를 읽으면서 새로 세울 수 있는 벽은 3개이고, 꼭 3개를 세워야 한다는 것을 보고 브루트포스를 통해 모든 경우를 봐야겠다고 생각했다. 벽을 3개만 세우는 경우의 수가 크지 않기 때문이다. 그 이후에는 바이러스가 퍼지게 되면 차지하는 넓이를 구해주었다. 모든 경우에 대해서 해당 작업을 한 뒤, 빈칸의 개수의 최댓값이 답이다. 참고로, '[BOJ] 22953 도도의 음식준비' 문제와 비슷하다고 느꼈다. 22953번 도도의 음식 ..

PS/백준 2021.09.05

[백준] 22953 도도의 음식 준비 (C++)

22953번: 도도의 음식 준비 첫째 줄에 요리사의 수 $N$ ($1 \le N \le 10$), 만들어야 할 음식의 개수 $K$ ($1 \le K \le 1\,000\,000$), 격려해줄 수 있는 횟수 $C$ ($0 \le C \le 5$)가 주어진다. 둘째 줄에 길이가 $N$인 정수 수열 $A$가 주어 www.acmicpc.net 이번 여름 '신촌 알고리즘 연합 캠프 콘테스트 - 초급'에 나온 문제이다. 그 당시에 나는 이 문제를 풀지 못했었다. 문제에서 주방장이 요리사에게 격려하는 과정이 Greedy할 것이라고 생각해서 풀었기 때문이다. 격려를 한 뒤, 이분 탐색을 통해 최소 시간을 찾는 방식으로 문제를 풀었었고 당연히 틀렸다. 대회가 끝나고 다시 문제를 보니 격려해줄 수 있는 횟수가 매우 작아서..

PS/백준 2021.09.01