구현

    [백준, Java] 21610번 : 마법사 상어와 비바라기

    [백준, Java] 21610번 : 마법사 상어와 비바라기

    🔗 문제 링크 https://www.acmicpc.net/problem/21610 😮 문제 해결 방법 주어진 기능 순서대로 구현하면 되는 시뮬레이션 문제이다. 구름이 di 방향으로 si칸 이동한다. 이 부분에서는 배열의 범위가 넘어가는 경우 처음 아니면 마지막으로 온다. 다음 행과 열을 구한다. (현재 행 , 열 + DX[방향] * 거리) 다음 행과 열이 0보다 작거나 N보다 크거나 같은 경우 넘어간 범위를 구해야한다. 0 보다 작은 경우 : (다음 행 or 열 + 1) % N + N - 1; N보다 크거나 같은 경우 : 다음 행 or 열 % N 넘어간 인덱스까지 구해진 경우 이동 후 구름 배열에 표시하고 해당 바구니의 물을 1 증가시킨다. 방금 물을 뿌린 부분에 물복사 버그를 진행한다. 이동 후 구름 ..

    [프로그래머스, Java] 방문 길이

    [프로그래머스, Java] 방문 길이

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/49994 😮 문제 해결 방법 좌표를 하나의 행렬로 이용하기 위해서 10 * 10지도를 11 * 11 좌표로 변환해서 사용했다. 첫 시작 위치는 (5,5)에서 시작하고 상, 하, 좌, 우로 이동하는 경우에 해당 경로를 이용했음을 체크해주는 배열을 생성한다. 배열은 3차원 배열을 사용해 좌표의 행렬과 방향을 표시한다. 3차원 배열을 이용함으로 써 이미 방문한 좌표의 경우에도 방향이 다르면 새로운 경로임을 판단할 수 있다. 이 부분에서 키 포인트는 만약 A → B로 이동하는 경우가 새로운 경로라면, B → A로 이동하는 경로 또한 동일한 경로이기 때문에 체크를 해주어야 하는 것이다. 주어진 ..

    [프로그래머스, Java] 주차 요금 계산

    [프로그래머스, Java] 주차 요금 계산

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92341 😮 문제 해결 방법 Map을 이용해서 자동차 번호별 자동차의 정보를 저장한다. 자동차는 차량번호, 주차시간 (주차장 이용시간), 입차 시간, 입/출차 상태를 갖도록 클래스를 만들었다. 먼저 record배열을 하나씩 보면서 자동차의 정보를 Map으로 관리한다. 자동차가 처음으로 입차하는 경우는 containsKey를 이용해 판단하고, 주차시간을 0으로 하고, 입/출차 상태를 false로 넣어준다. 자동차가 출차되는 경우는 출차 시간에서 입차 시간을 빼서 주차시간을 갱신한다. 자동차가 다시 입차되는 경우는 입차 시간을 갱신한다. 모든 이력을 이용해 저장했다면, Map정보를 이용해 ..

    [백준, Java] 12100번 : 2048(easy)

    [백준, Java] 12100번 : 2048(easy)

    🔗 문제 링크 https://www.acmicpc.net/problem/12100 😮 문제 해결 방법 첫 번째 턴부터 시작해서 5턴이 넘어갔을 때 남아있는 블럭 중 최대 크기의 블럭을 탐색했다. 매 턴마다 상, 하, 좌, 우 방향으로 블록이 이동하면서 합쳐질 수 있고, 합쳐진 이후에는 해당 방향으로 블록들을 밀어줘야한다. 그리고, 한 턴당 상, 하, 좌, 우 방향으로 블록을 옮기기 때문에 각 방향으로 블록을 옮길 때마다 블록의 배열을 매 턴의 input 으로 들어온 배열로 다시 돌려놔 줘야 다른 방향에 대해서도 올바르게 탐색이 가능하다. 즉, 매 턴의 게임판의 상태 배열을 깊은 복사를 통해 한 개 더 생성한 후 복사한 배열을 통해 방향을 탐색하고, 방향 탐색을 끝냈을 땐 기존 배열로 다시 초기화 해주었다..

    [프로그래머스, Java] N^2 배열 자르기

    [프로그래머스, Java] N^2 배열 자르기

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/87390 🤔 문제 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다. 정수 n, left, right가 매개변수로 주어집니다. 주어..