https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 💡IDEA 조건에 맞게 구현하는 문제이다. 큐를 사용해서 뱀의 몸을 구현하고, 주어지는 방향에 맞게 위치를 틀어준다. 방향은 좌우로 움직이는 것을 고려하여 dir 배열을 사용하여 인덱스 값으로 방향을 조절했다. 가장 먼저 0행 0열부터 뱀이 오른쪽 방향으로 움직인다. 갈 수 있는 곳이라면 뱀의 몸에 추가해주고, 시간을 카운트한다. 만약 해당 위치에 사과가 있다면 사과가 없어지고 꼬리는 유지한다. 하지만 ..
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 💡IDEA BFS를 사용하여 구현하는 문제이다. 인구 이동 조건에 따라 구현하는 과정 중 인접한 나라 중 인구 차이가 L이상 R이하인 나라끼리 연합을 맺는다는 부분에서 BFS를 사용해야 한다. 상하좌우로 인접한 나라가 범위 내에 있고, 방문하지 않았고, 현재 나라와의 인구 차이가 L이상 R이하라면 큐에 추가해주는 식으로 구현했다. 이 때 연합한 나라들을 저장해두는 union 배열에도..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 💡IDEA 문제의 조건대로 구현해야 한다. 네 개의 톱니바퀴를 어떤 방향으로 돌려야 하는지 알아야 하는데, 현재 바퀴와 맞닿은 바퀴들의 방향도 조정해주어야 한다. 이 과정에서 나는 BFS를 사용했다. 현재 바퀴의 번호를 바탕으로 인접한 바퀴의 맞닿은 부분이 같은지 다른지 판단하여야 한다. 왼쪽과 닿는 것은 현재 바퀴의 -2번째와 왼쪽 바퀴의 2번째이고, 오른쪽과 닿는 것은 현재 바퀴의 2번째..
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 💡IDEA 구현하는 문제이다. 처음 문제를 보았을 때 BFS를 사용해야할 줄 알았으나, 간단하게 구현만 해주면 되는 문제였다. 구현하는 조건이 쉽지는 않아 조금 헤매긴 했다. 방향을 왼쪽으로 틀어준다는 점이 까다로워서 따로 함수를 만들어 현재 방향에 따른 왼쪽 방향 배열을 구했다. visited 배열을 사용하지 않고 하려면, 벽인 부분(1)과 방문한 부분(-1)을 구분해야한다. 현재 방향에 맞는..