Loading...

[백준] 17140번 이차원 배열과 연산 (java, 구현, 시뮬레이션)

www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 최대 길이가 100만 가능하므로 미리 크기 100으로 만들어놓고 넘어가는 길이의 데이터만 무시해준다. 각 행별로 각 수를 count배열에 등장하는 만큼 1로 더해줘서 (수, 등장횟수) 쌍을 리스트에 넣어준다. 리스트에 넣어줄 때 중복된 수가 들어가지않도록 주의! 해준다 리스트를 기준에 따라 정렬한다. 최대 행 길이와 최대 열 길이는 정렬할 때마다 새로 구해줘야된다. 계속 max연산만 하면 이전 정렬..

[백준] 14891번 톱니바퀴 (java, 시뮬레이션)

www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 시계방향 반시계방향 이동은 앞, 뒤의 원소를 반대쪽에 다시 넣어주는 것으로 구현하면 된다. (덱을 써도된다.) 현재 톱니바퀴 6번 인덱스 (left) 와 왼쪽 톱니바퀴 2번 인덱스를 비교해서 다르면 이동시킨다. - 방향 반대, left는 왼쪽 톱니바퀴의 6번 인덱스로 바꿔줌. (1번 톱니바퀴까지 쭉 진행) 현재 톱니바퀴 2번 인덱스 (right)와 오른쪽 톱니바퀴의 6번 인덱스를 비교해서 다르면 오른쪽 톱니..

[백준] 17822번 원판 돌리기 (java, 시뮬레이션)

www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 인접한 영역의 삭제는 큐를 이용해서 해줬다 (쭉 타고 들어가면서 인접한 영역 모두 검사) 시계방향과 반시계를 거꾸로 구현했다 ㅎ d의 조건만 반대로 해주면 된다 평균은 크거나 작은 경우 다른 연산을 하므로 소수점까지 고려해서 실수로 구해줘야 된다. 각 판은 리스트로 구현해서 시계방향, 반시계방향 이동시 앞 뒤의 원소만 빼서 반대 위치에 넣어주면 된다. 배수이므로 x로 시작해서 x를 더해가며 판의..

[백준] 17837번 새로운 게임2 (java, 시뮬레이션, 구현)

www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 말이 4개 이상 겹치면 탈출 chips라는 이차원 배열에 arraylist가 들어가게 해서 해당 위치에 칩 리스트를 만들어줬다. package algo0419; import java.util.ArrayList; import java.util.Scanner; class Horse{ int y,x,dir; public Horse(int y, int x, int dir) { super(); this.y = y; ..

[백준] 2573번 빙산 (java, 시뮬레이션, bfs)

www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Pos{ int y,x; public Pos(int y, int x) { super(); this.y = y; this.x = x; } } public class Main { static int n,m; static int[][] map; static in..

[백준] 20061번 모노미노도미노2 (java, 시뮬레이션)

www.acmicpc.net/problem/20061 20061번: 모노미노도미노 2 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, www.acmicpc.net 미친 구현.. ㅎㅎ 옅은 영역과 보드가 모두 차는 경우 점수 계산 먼저하고 옅은 영역을 처리해준다. 이때 행을 밀게 되는데 옅은 영역번호 0,1 행 혹은 열에 해당하는 곳을 꼭 0으로 초기화해줘야된다. 점수를 계산할 때도 옅은 영역을 포함해서 밀어주되, 행 혹은 열이 0인 곳은 덮어씌워지지않으므로 꼭 0으로 초기화를 해줘야 된다. 나머지는 구현구현 import java.util.Scanner; pub..

[백준] 19237번 어른 상어 (java, 시뮬레이션)

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 상어 주의할 점 사방에 냄새가 있을 경우 자기의 냄새 방향으로 간다. (자기의 냄새도 사방에 있을 수 있다. 여기서도 우선순위대로 처리해주자.) import java.util.Scanner; class Place{ int y,x; public Place(int y, int x) { super(); this.y = y; this.x = x; } } public clas..

[백준] 17143번 낚시왕 (java, 시뮬레이션)

www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 문제자체는 어렵지 않은데 시간초과가 있어서 최적화해줘야한다. --- 풀이 r길이는 2인데 속도가 1000이라면 엄청나게 왔다갔다해야된다. 같은 위치에 있을 경우의 규칙을 찾아야된다. 주의할 점은 같은 위치에 있더라도 방향이 반대인 것은 같은 경우가 아니다! 예를 들면 C=5이고 현재 열 번호 1에 있고 우로 움직이는 상어가 있다고 하자 열 번호 1 2 3 4 5 인 경우 S=1이면 오른쪽으로..

[백준] 2468번 안전 영역 (java, bfs, 시뮬레이션)

www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 추가 설명에 비에 모두 잠기지 않을 가능성이 있다고 했다. (비가 안오는 경우가 있다. 높이 모두 1인 곳의 기준) 최대 지역의 높이 = 비의 최대 강수량으로 놓고 모든 비의 높이에 따라서 bfs를 돌려준다. 비의 높이보다 낮은 곳은 모두 0으로 만든 후 여전히 양수인 (물에 잠기지 않은 곳)의 영역을 구해준다. import java.util.LinkedList; import java.util.Queue; import..

[백준] 19238번 스타트 택시 (java, 시뮬레이션, bfs)

www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 중간 중간에 조건들을 처리해줘야 할 것이 많다. 디버깅이 안되서 아예 다시 풀었다. 도착지, 출발지 정보를 다 저장하고 taxi클래스를 또 따로 만들어줬다. 한 사람의 도착지 = 다음 승객의 출발지이거나 초기 택시 출발지 = 이미 승객이 거기 서있음 의 경우로 택시 위치의 승객은 또 따로 처리해줘야 된다. 각 승객은 (출발지 != 도착지) 정보를 가졌지만 모든 승객이 같은..