전체 글 396

[backjoon]19238 스타트택시 java

https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 이 문제는 세세한 사항이 많아서 정밀하게 하지 않으면 통과하기 어렵다고 생각한다. 큰 틀만 보면 BFS를 2번 돌리는데, 거리도 표시해주어야한다. 현재 위치에서 최단 거리 승객을 찾기위한 BFS 승객을 목적지까지 최단 거리로 데려다주기 위한 BFS 1. 에서 승객을 찾을 때 가장 가까운 승객, 가까운 승객이 많다면 행이 작은 순서, 열이 작은 순서대로 찾는다..

[backjoon]3055 탈출 java

https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net BFS를 두번 돌리면 되는 문제! 시간을 알아야하기 때문에 별도의 temp Queue를 둬서 계속해서 변하도록 하였다. 물이 생길 예정이 곳에 갈 수 없기에 먼저 물이 생길 법한 곳을 만들어 주고, 이동을 하였다. 이동은 간 곳 또 갈 수 있기에 방문 표시를 하지않았고, 물이 생길 곳은 방문표시를 하여 시간 초과가 나지 않도록 하였다. 또한, 시간을 알아야하기 때문에 나의 경우는 시간을 별도로 파악할 테이블을..

[backjoon]16927 배열돌리기2 java

https://www.acmicpc.net/problem/16927 16927번: 배열 돌리기 2 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 요청 사항에 따라 배열을 돌리는 문제! 나는 이런 배열을 돌리는 문제에서 주로 Deque를 이용해서 문제 풀이를 한다. 돌리는 방향에 맞게 for문 4개를 이용해서 순서에 맞게 해당 값을 모두 queue에 넣어준다. 이동하는 횟수에 맞게 앞의 값을 뒤로 다시 넣어줌으로써 순서를 맞춰준다. 이후 처음 값을..

백신 예약 접종 정보 조회하기

https://relay.kdca.go.kr/cobk/rsrv/web/getVcnRsrvCnfm.do 코로나19 예방접종 사전예약 시스템 예약 조회/변경/취소 relay.kdca.go.kr 국민비서 구삐에서 예약 정보가 온다고 하는데 문자로 한 나의 경우엔 오지 않았고, 따라서 백신 정보를 알 수가 없었다. 백신 정보를 확인하기 위해 사이트를 들어가야했는데 그 과정이 매우 힘들었고 찾기가 어려운 곳에 있어 사이트 주소와 사용 방법을 공유한다. 위의 링크에서 백신 예방 접종에 대한 예약 정보를 조회할 수 있다. 예약번호는 예약확인되었다고 문자가 휴대폰에 전송되어서 확인하면 된다. 각각의 정보들을 입력하고 예약조회를 하면 다음 페이지로 넘어가서 조회가 가능하다. 예약 변경 버튼을 클릭하면 1차 /2차 예약 ..

정보 2021.10.05

[backjoon]21610 마법사 상어와 비바라기 java

요청사항에 따라 구현하였다. 구현 중에 주의해야할 부분은 구름은 경계를 넘나들어서 나머지 연산을 이용하여 올바르게 값을 넣어주어야하고. 바로 직전에 구름이 있던 자리엔 구름이 생기면 안 되기에 이 점도 유의해줘야한다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107import java.io.*;import java.util.*; class Main { static int N;..

[backjoon]16236 아기상어 java

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 중간 중간의 목적지를 분명하게 정하는 것이 중요한 문제! 1. 아기 상어의 위치에서 최단 거리 내 갈 수 있는 모든 물고기 위치의 경우의 수를 구한다. 2. 물고기가 두 마리 이상이라면 기준에 맞게 정렬한다. 3. 중간 중간 상어를 관리해주기 위해 자료형 shark를 만들었다. import java.io.*; import java.util.*; class Main { static int N..

[backjoon]16234 인구 이동 java

16234번: 인구 이동 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 좀더 간결하게 풀이해서 포스팅 (링크) 이전엔 방문체크를 다른 배열을 둬서 했는데 그런 것 없이 한번에 풀이하여서 좀더 깔끔한 풀이가 됨 풀이 개요 BFS나 DFS 와 같이 완전 탐색 이용해서 풀이하면 되는 문제. 나는 BFS를 사용하였고, BFS 두 번 돌리면 시간 초과가 일어나기에 한번 BFS를 돌릴 때, 인구 이동시 필요한 값들을 다 저장해야한다. 문제 풀이시 약간 헷갈려서 같은 역할을 하는 방문 체크를 위한 배열이 2..

[backjoon]12100 2048(easy) java

https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 백준의 삼성 문제들은 배열을 잘 다루면 비교적 쉽게 풀리는 문제다. 이것도 골드2지만 배열을 잘 다룬다면 ㅠㅠ 쉽게 풀수 있지 않을까 생각한다. 1. 상하좌우를 5가지의 중복순열로 만든다. 2. 경우의 수에 맞게 보드를 조합한다. 주의 : 처음 지도의 값은 변하면 안 되므로 복사해서 사용해야하는데 배열의 주소 값이 아닌 실제 값을 복사하도록 하자! import java..

[backjoon]3190 뱀 java

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 1. Queue : 뱀의 움직임 관리 Queue moveInfo 2. Deque : 뱀 자체 관리 Deque snake 3. int[][] : 사과의 위치 관리 map 4. class Dot : 뱀이나 사과의 위치 값 관리 5. class Snake : 뱀이 움직일 위치 정보 기록 6. move() : 뱀이 움직임에 대한 메서드 뱀이 사과를 먹으면 커지고 안 먹으면 안 커지거나 코너에서의 방향 전환에 대..

[backjoon]15684 사다리 조작 java

https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 삼성 문제 특성상 시키는 대로만 하면 되는데... 나의 고질적인 row/col의 헷갈림과 쓸데없는 반복문 돌림으로 고생했던 문제 문제는 백트래킹을 이용해서 풀면 된다. 삼성 문제의 경우 최대 횟수가 정해져있어서 이것을 잘 고려한다면 생각보다 백트래킹으로 인해 시간초과가 뜨진 않을까의 걱정을 덜 수도 있다. 풀이 포인트를 정리하자면, 1. 사다리 게임을 통해 결과 확인 (처음부터 원하던 결과여서 ..

반응형