[백준 / JAVA] 14890. 경사로 (G3) https://www.acmicpc.net/problem/14890 문제 이해만 하면 쉬운 문제이다.(국어 문제인듯) NxN의 지도에서 가로 세로 한 줄이 각각 하나의 길이 되고 해당 길들의 경사로 설치 조건만 따져주면 된다. 가로와 세로가 모양과 조건이 완전히 같기 때문에 둘 중 하나만 구현하면 된다. 문제에 조건 예시가 있는데 사실 네가지 조건 중에서 2,3,4는 똑같은 조건이다. 한 마디로 경사로가 설치된 칸에 또 다른 경사로를 설치할 수 없다는 건데 경사로 설치 배열을 쓰면 간단하게 체크 가능하다. import java.io.*;import java.util.*;public class Main { static BufferedReader br; static StringTokenizer st; st.. [백준 / JAVA] 20056. 마법사 상어와 파이어볼 (G4) https://www.acmicpc.net/problem/20056 이 문제의 재밌는 부분은 3가지 인 것 같다.1. 8방이동 + 포탈 2. 홀수 짝수 일관성 판별 3. 이동한 파이어볼과 기존에 그 위치에 있던 파이어볼 구분 나의 해결1. 이동 후의 좌표가 양의 방향으로 벗어날 땐 N으로나눈 나머지를 사용하고, 음의 방향일땐 N으로 나눈 나머지(음수)를 N에 더해준 값을 쓴다. (-1, -2가 N-1, N-2 이런 식으로 바뀌도록)2. 각각 파이어볼의 방향을 2로 나눈 나머지를 모두 더해서 0이면 모두 홀수, 파이어볼의 개수와 같다면 모두 짝수라고 가정했다.3. 이건 그냥 이동카운트 하나를 추가했는데 별로 세련되지 못한 방법인 것 같다... import java.io.*;import java.util... [백준 / JAVA] 16234. 인구 이동 (G4) https://www.acmicpc.net/problem/16234아니 이거 네모 미리보기 왜 안 나와? 내가 풀었지만 푼 것 같은 기분이 안든다...BFS 할 때 저장용 큐에 처음 방문한 큐를 넣어도 되나 라는 고민이 있었다. 이걸 넣자니 주변에 조건을 만족하는 칸이 없을 때 값일 달라질까봐 그랬다. 그런데 연결된 부분을 더하고 나누는 과정에서 저장용 큐의 크기가 1이면 하나의 칸의 값을 1로 나누는 거라 결과적으로 값이 유지된 채 큐만 비워진다! 그래서 아름답게 풀린다. 근데 이걸 내가 노린 게 아니라서 찝찝하다... import java.io.*;import java.util.*;public class Main { static BufferedReader br; static StringTokeniz.. [백준 / JAVA] 17140. 이차원 배열과 연산 (G4) https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다.www.acmicpc.net 이 문제의 비밀은 크기가 100이 넘어가는 경우의 처리를 안해도 통과한다는 것이다! 해당 경우를 처리 안하고도 예제가 모두 통과하길래 어인바(Array Index Out of Bound 줄인말 ㅎ)를 띄울 심산으로 제출했는데 통과가 돼버렸다...아무튼 문제 자체는 수의 등장 횟수를 비교한 후 등장 횟수가 같으면 값으로 비교해서 정렬하는 건데 이런 문제는 Comparable를 상속받는 클래.. [백준 / JAVA] 14502. 연구소 (G4) https://www.acmicpc.net/problem/14502 14502번: 연구소인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크www.acmicpc.net 벽을 세울 수 있는 곳을 미리 저장하고 조합으로 벽을 하나하나 세우면서 계산하는 문제이다. BFS를 사용할 때 바이러스의 위치를 저장해 놓았다가 한번에 넣으면 쾌적하다. 점수 계산을 위해 배열을 복사하기도 하던데 그럴 필요 없이 전체에서 바이러스 확산 범위만큼 빼주면 계산할 수 있다. import java.io.*;import java.util.*;public class Main { static Buffe.. [백준 / JAVA] 14500. 테트로미노 (G4) https://www.acmicpc.net/problem/14500 14500번: 테트로미노폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변www.acmicpc.net 요령이 없는 문제지만 나름 요령있게 풀었다. 일자와 네모는 각각 구현해야 하지만 L자, 제트, ^오^는 한번에 계산할 수 있다. 머리를 굴리면 2x3칸의 직사각형에서 2칸씩 제거하는 방식으로 저 세 가지 도형의 돌리고 뒤집은 형태를 모두 만들 수 있다. 우리가 필요한 건 최대값이니 6칸을 모두 더한 후 선택한 2칸들 중 합이 가장 작은 값을 빼면 된다! import java.util.*;impor.. [백준 / JAVA] 14499. 주사위 굴리기 (G4) https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지www.acmicpc.net 주사위의 움직임만 구현하면 참 쉬운 문제이다. 주사위 전개도를 공책에 그리고 동서남북으로 굴렸을 때 숫자가 어떻게 변화하는지 관찰해보자. 가장 귀찮아 보이는 길이 가장 쉬운 길일 수도 있다. import java.util.*;import java.io.*;public class Main { static BufferedReader br.. [백준 / JAVA] 21610. 마법사 상어와 비바라기 (G5) https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기www.acmicpc.net 단순 구현이지만 다른 어려운 문제들에 사용할 만한 기법들을 연습하기 좋은 문제라고 느껴졌다. 특히 배열 밖으로 나가면 반대쪽에서 들어오는 부분 구현이 유익했다. import java.util.*;import java.io.*;public class Main { static BufferedReader br; static StringTokenizer st; static StringBuilder .. 이전 1 2 3 4 5 다음