본문 바로가기

PS/BOJ75

[백준] 벽 부수고 이동하기 3(c++) https://www.acmicpc.net/problem/16933벽 부수고 이동하기 2와 비슷하지만낮과 밤이 바뀌는 조건과 여러 방향으로 벽을 만났을 때 중복으로 해당 좌표의 거리(시간)가 올라가지 않게 하는 것이 포인트였다.또한 벽을 부수는 것이 값을 오염시킬 수 있어서 나눠서 반복문을 진행시켜주었다. #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;struct wall { int destroy, is_night, y, x;};char arr[1001][1001] = { 0 };int visited[11][1001][.. 2025. 3. 14.
[백준] 17478. 재귀함수가 뭔가요?(c++) https://www.acmicpc.net/problem/17478재귀함수가 뭘까...? #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int cnt = 0, n;void recursion(int cnt) { string temp = ""; for (int i = 0; i > n; cout 2025. 3. 11.
[백준] 2146. 다리 만들기(c++) https://www.acmicpc.net/problem/2146다음과 같은 아이디어로 진행했다.시간초과가 나지 않는다는 생각으로...그렇게 풀렸다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int dy[4] = {0, 0, -1, 1};int dx[4] = {1, -1, 0, 0};int arr[101][101] = {0};int visited[101][101] = {0};int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); .. 2025. 3. 11.
[백준] 2573. 빙산(c++) https://www.acmicpc.net/problem/2573대략 다음과 같은 아이디어를 가지고 구현을 시작했다.계속 빙산이 지워지니,,, 원본을 지니고 있는 배열을 가지고 비교하는 것이 키 포인트였다. #include #include #include #include #include #include #include #include #include #include #include #include #define ll long longusing namespace std;int dy[4] = {0, 1, 0, -1};int dx[4] = {1, 0, -1, 0};int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, .. 2025. 3. 11.
[백준] 9466. 텀 프로젝트(c++) https://www.acmicpc.net/problem/9466쉽지 않았다.틀렸던 방식은 loop 마다 visited를 새로 생성해서 o(n^2)이 되어 시간초과가 나오는 문제였다.(방문했던 노드를 다시 한번 방문한다는...) -> 이번 방문에서 자기 자신을 다시 만났을 경우, 사이클이라는 것을 표시해줄 -1을 넣어주고, 한 사이클을 돌았을 때 (-1을 다시 만났을 때) 탈출해주면 된다.이미 지나갔었던 방문 배열을 만나게 된다면, 자연스럽게 사이클이 아니라는 것이니 break 해주면 된다. #include #include #include #include #include #include #include #include #include #include #include #include using namesp.. 2025. 3. 11.
[백준] 2206. 벽 부수고 이동하기(c++) https://www.acmicpc.net/problem/2206벽 부순 상태인 방문 배열과, 벽을 부수지 않은 상태인 방문배열을 나누는 것과, 그에 따른 분기를 설정하는 것이 쉽지 않았다.처음 접근 방법으로 flag를 통해서 탈출도 하고 분기를 나눠보려 했다. 하지만 모든 조건을 커버하지 못해서 아예 방향성을 바꿨다.chatgpt도 이런 답변을 하였다. 일반적으로 한 개의 벽을 부술 수 있는 문제에서는 3차원으로 상태를 관리한다고 한다(y,x, 벽부순여부)그걸 적용하니.. 바로 풀렸다...#include #include #include #include #include #include #include #include #include #include #include #include #define ll lo.. 2025. 3. 11.