본문 바로가기

728x90

2차원배열

[프로그래머스] (2024 KAKAO WINTER INTERNSHIP) 가장 많이 받은 선물 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 선물을 주고 받은 기록을 정리하고 그 기록을 바탕으로 이번에 선물을 최대로 많이 받은 사람의 선물 수를 구하는 문제입니다. 선물기록을 2차원 배열로 정리하여 이번에 선물을 받는 경우를 쉽게 구하도록 하는 것이 이번 문제의 요점인듯 싶습니다. friends의 입력값이 모두 문자열 이기 때문에 각 문자열에 대응하는 이름을 빠르게 찾기 위해 Map을 사용해 이름들을 들어오는 순으로 숫자를 .. 더보기
[백준] 17143 낚시왕 / 자바(Java) 문제 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 해설 상어 객체를 만들어 낚시왕이 상어를 잡는 부분에는 상어배열을, 상어가 이동하는 부분에는 상어 큐를 사용해서 해결하였습니다. 상어의 이동 부분에 상어 큐를 사용한 이유는 상어의 이동들은 모두 동시에 이동하기 때문에 큐로 상어 객체이 이동된 이후의 값을 추가하며 넣고 배열에 다시 넣으며 상어끼리 먹는 구간을 구현했습니다. 코드 import java.io.BufferedR.. 더보기
[백준] 17144 미세먼지 안녕! / 자바(Java) 문제 https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 해설 2차원배열에서의 탐색을 구현하는 문제입니다. 크게 2단계로 이루어져 있으며 미세먼지가 확산되는 단계와 공기가 순환하는 단계가 있습니다. 1단계 : 미세먼지 확산 확산의 규칙 1. 인접한 네 방향으로 확산하되 벽과 공기청정기로는 확산되지 않는다. 2. 확산된 곳에는 (본래의 값/5) 의 값만큼 먼지가 추가된다(소수점자리는 이산수학으로 / 사용시 제거된다) 3. 본래의 위치에는 (본래의 .. 더보기
[백준] 1987 알파벳 / 자바(Java) 문제 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 $R$칸, 가로 $C$칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 ($1$행 $1$열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 www.acmicpc.net 해설 2차원배열에서 4방탐색을 통해 가장 많이 가는 횟수 찾기 문제입니다. 특이한 점은 다른 문제처럼 숫자가 아닌 알파벳으로 2차원 배열이 구성되어있고, 특정 위치의 방문여부가 아닌 특정 알파벳을 방문했는가에 따라 추가탐색의 가능 여부가 갈립니다. 문자열이 아닌 알파벳의 방문여부이기 때문에 map을 사용하지 않고 26까지 있는 1차원 배열을 통해 index 0의 값은 A, ind.. 더보기
[프로그래머스] n^2 배열 자르기 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 문제의 예시 그림에서는 간단하게 붙이는 것으로 완성되지만 값의 범위들이 커 실제로 모두 구현하면 공간복잡도에 무리가 갈 수 있을 듯 합니다. 따라서 2차원 배열의 성질들을 통해 정답 배열에 어느 값이 들어가는지를 알면, right-left+1번만 계산을 하면 해결할 수 있을 것입니다. 문제의 목표는 left~right까지의 값들로 순서대로 이루어진 배열을 얻는 것입니다. 그렇다면 lef.. 더보기
[프로그래머스] 리코쳇 로봇 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 2차원배열에서의 4방탐색과 bfs를 통해 목표까지의 최단 횟수를 구하는 문제입니다. bfs를 구현하기 위해 큐를 사용합니다. 큐에는 특정 좌표(r,c)를 담는 1차원 배열을 넣어줍니다. 여기서 중요한점! 여러번 이동하다 이전에 갔던 곳을 표시하는 boolean 2차원 배열이 필요합니다. 목표까지의 최단 횟수를 구하기 때문에 이전에 갔던 곳을 간다면 목표로 도달하는데 그 곳보다 무조건 .. 더보기

728x90