본문 바로가기

전체 글152

[백준] 8911번: 거북이 (Java) 1. 문제설명2차원 평면에서 거북이 로봇에게 내릴 수 있는 명령은 F(한 눈금 앞으로), B(한 눈금 뒤로), L(왼쪽으로 90도 화전, 방향만 바꿈), R(오른쪽으로 90도 회전, 방향만 바꿈)이 있다. 거북이가 지나간 영역을 모두 포함할 수 있는 가장 작은 직사각형의 넓이를 구하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식방향 배열 `dx`, `dy` 를 사용한다. (북동남서 순서)입력에 따른 좌표 게산과 방향 전환을 통해 거북이가 이동하는 영역의 최대/최소 좌표를 구한다.입력에 따른 좌표 계산F, B ⇒ x, y 좌표를 현재 방향에 따라 좌표 계산입력에 따른 방향 전환L ⇒ 방향 인덱스 : 3→2, 2→1, 1→0, 0→3 ⇒ `(g + 3) % 4`R ⇒ 방향 인덱스: 0→.. 2024. 9. 18.
[백준] 15685번: 드래곤 커브 (Java) 1. 문제설명드래곤 커브는 시작 점(x, y)에서 주어진 방향으로 직선을 그린 후, 특정 규칙에 따라 회전하며 곡선을 만들어낸다. 방향(d)과 세대(g)가 주어지면, 해당 드래곤 커브를 그린 후, 그리는 과정에서 만들어지는 1x1 정사각형이 몇 개인지 구하는 문제이다.(0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10)드래곤 커브의 규칙은 주어진 방향으로 1세대 드래곤 커브를 그리고, 세대별로 현재까지 그린 선분들을 뒤집은 후 90도로 회전시킨 뒤, 이를 이어서 그리는 방식이다.시간 제한: 1초메모리 제한: 512MB 2. 접근 방식참고: https://dublin-java.tistory.com/34방향 전환 (90도)0 → 1, 1 → 2, 2 → 3, 3 → 0위를 식으로 전환하면 .. 2024. 9. 17.
[백준] 5212번: 지구 온난화 (Java) 1. 문제설명지도는 R*C 크기의 그리드로 나타낼 수 있고, ‘X’는 땅을 나타내고, ‘.’는 바다를 나타낸다. 50년이 지나면, 인접한 세 칸 또는 네 칸에 바다가 있는 땅은 모두 잠겨버린다. 주어진 현재 지도에서 50년 후의 지도를 구하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식지도에서 땅인 경우 BFS를 사용해 인근의 바다 개수를 구한다.땅의 인근에 바다가 3개 이상이면 해당 땅의 위치를 저장한다.땅이 지도의 맨 위 또는 맨 아래에 있으면 바다의 개수를 1개 더 더한다.땅이 지도의 맨 왼쪽, 또는 맨 오른쪽에 있으면 바다의 개수를 1개 더 더한다.저장한 땅의 위치를 바다로 변경한다.지도 출력 시 필요한 범위를 설정한다.설정한 범위로 지도를 출력한다. 3. 최종 코드impor.. 2024. 9. 17.
[백준] 1941번: 소문난 칠공주 (Java) 1. 문제설명총 25명의 여학생들이 5x5의 정사각형 격자 형태로 자리가 배치되어 있다. S(이다솜파)와 Y(임도연파)를 값으로 갖는 5*5 행렬이 주어졌을 때 아래 규칙을 만족하는 모든 경우의 수를 구한다.7명의 학생들로 구성되어야 하고, 7명의 자리는 서로 가로나 세로로 인접해야 한다.7명의 학생 중 S 학생이 적어도 4명 이상은 반드시 포함되어야 한다.시간 제한: 2초메모리 제한: 256MB 2. 접근 방식25자리 중 7자리를 선택하는데, ‘S’ 학생이 4명 이상 포함되도록 한다. (조합, 백트래킹)BFS를 사용해 해당 7개의 자리가 모두 상하좌우로 연결되어 있는지 확인한다.선택된 7명의 자리가 서로 인접한디 BFS로 확인한다. 인접할 경우 count 증가시킨다. 3. 틀린 이유2차원 배열로 백트래.. 2024. 9. 13.
[백준] 14888번: 연산자 끼워넣기 (Java) 1. 문제설명N개의 수로 이루어진 수열에서, 수와 수 사이에 연산자를 하나씩 넣어 수식을 만들 수 있다. 식의 계산은 연산자 우선순위를 무시하고 앞에서부터 진행한다. 나눗셈의 경우 몫만 취하며, 음수를 나눌 때는 양수로 바꾼 뒤 몫을 취하고, 그 몫을 음수로 바꾼다.N개의 수와 N-1개의 연산자가 주어졌을 때, 만들 수 있는 식의 결과가 최대인 것과 최소인 것을 구한다. (주어진 수의 순서를 바꿀 수 없고, 어떤 식이더라도 -10억보다 크거나 같고, 10억보다 작거나 같은 INT 범위의 결과가 나오는 입력만 주어진다.)시간 제한: 2초메모리 제한: 512MB 2. 접근 방식수와 연산자를 배열에 저장한다.모든 경우의 식을 계산해야 한다. ⇒ 완전탐색, 백트래킹메서드에서 “다음 계산할 수의 인덱스(`numI.. 2024. 9. 13.
[백준] 16987번: 계란으로 계란치기 (Java) 1. 문제설명계란은 내구도와 무게에 대한 정보가 주어지고, 왼쪽부터 차례로 들어 한 번씩만 다른 계란 쳐 최대한 많은 계란을 깨는 문제이다. 계란의 내구도는 상대 계란으 무게만큼 깎이게 되고, 내구도가 0 이하가 되면 깨진다.계란을 치는 과정:가장 왼쪽 계란을 든다.들고 있는 계란으로 다른 계란 중 하나를 친다. 만약 손에 든 계란이 깨졌거나 다른 모든 계란이 깨진 경우 넘어간다.최근에 든 계란의 오른쪽 계란을 들고 2번 과정을 반복한다. 가장 오른쪽 계란을 들게 되면 종료한다.시간 제한: 2초메모리 제한: 512MB 2. 접근 방식참고: https://buly.kr/4bgWSet계란의 내구도와 무게를 각각 다른 배열에 저장한다.백트래킹을 사용하여 계란을 깨뜨리는 모든 경우의 수를 구한다.마지막 계란을 .. 2024. 9. 13.
반응형