목록알고리즘 (192)
곽로그
alwaysbemoon.tistory.com/170 [백준 3085, Java] 사탕 게임 문제 www.acmicpc.net/problem/3085 3085번: 사탕 게임 첫째 줄에 상근이가 먹을 수 있는 사탕의 최대 개수를 출력한다. www.acmicpc.net 풀이 1. 행을 순회하면서 인접한/같은 색의 칸을 탐색한다 2. 인접한/ 같. alwaysbemoon.tistory.com 위 포스팅에서 코드를 좀 개선 했다. 좌-우/ 상-하 인접하는 것을 , 동,남방향에 대한 좌표배열을( int[] dr = {0,1,}, int[] dc ={1,0}) 선언해서 for 문으로 합쳤다. import java.io.BufferedReader; import java.io.BufferedWriter; import j..
문제 www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 풀이 우선 필요한 감독관 수는 N명이다. 왜냐하면 각 시험장에 총감독관 1명이 있어야 하기 때문이다. 그러면 이제 총 감독관이 커버할 수 있는 인원을 제외한 나머지 인원에 대해서 몇명의 부감독관이 필요한지를 생각하면 된다. 다시말해 i번째 시험장에 10명이 있고 총 감독관이 커버할 수 있는 인원이 3명이라고 한다면 10명에서 3명을 제외한 7명에 대..
문제 www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 처음풀이 맨 처음에는 head와 tail 만 생각하고 풀었다. head가 빈칸을 만났을 때 내부에서 다시 for문을 돈 이유는 tail을 지운 후 원래있던 tail 이전의 칸을 tail 로 업데이트 하기 위해서 였다. 그런데 이 로직은 E S S E E S(꼬리) S E 의 경우 (뱀이 →→↑← 의 방향으로 이동한 경우) head를 tail 로 업데이트 하게 된다. (E: 빈칸, S: 뱀) import java...
문제 www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; ..
문제 www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 풀이 처음 접근이 어려웠던 건, 어떤 변수들이 필요한지를 구체적으로 생각하지 못했기 때문이다. "상어가 있고, 냄새가 있으며 상어가 이동을 할 때 냄새를 뿌린다"를 프로그래밍 적으로 표현하면 "상어 객체가 있고(속성: 위치, 번호, 방향) 냄새객체가 있다(속성: 위치, 상어번호, 지속시간) 상어는 상하좌우인접한 칸으로 이동하고, 이동 후에는 해당위치에 냄새객체를..
문제 www.acmicpc.net/problem/16948 16948번: 데스 나이트 게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 "데스 나이트"를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면, (r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크 www.acmicpc.net 풀이 이건 진짜 기본 bfs! 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.LinkedList; impo..
문제 www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 풀이 문제에서 주어진 봄 - 여름 - 가을 - 겨울 순서대로 조건과, 변화를 살펴보자 봄 : 나무가 양분을 먹는다 양분을 먹는 양 : 나무의 나이만큼 양분을 먹는 칸 : 현재 나무의 위치 → 나무 클래스의 속성 : 나이, 위치(x,y) 양분을 먹는 조건 : 나이가 어린 나무 먼저 먹는다 → 무 클래스를 "나이" 순으로 정렬 할 수 있도록 Comparable구현, Collections.sor..
문제 www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 풀이 문제 순서대로 상어 현재위치의 물고기를 먹는다 → 물고기가 이동한다→ 상어가 이동한다 를 구현하면 된다. 이때 문제에서 힌트를 준다고 생각했던 부분이 예시였다. in[][] map을 선언해서 여기에는 물고기번호와 상어를 표시했다. 그런다음 "번호순서대로 물고기가 이동한다"를 구현해 주기 위해서 Fish[] fishArray를 선언한 후, 각 인덱스가 물고기 번호라고 생각하고 물고기 ..