728x90
반응형
SMALL
프로그래머스 문제 풀이: 250125 [붕대 감기]
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/250125
문제 설명:
주어진 board
에서 특정 위치 (h, w)
를 기준으로 상하좌우에 같은 값이 있는 경우의 개수를 반환하는 문제입니다.
문제 해결 코드
#include <string>
#include <vector>
using namespace std;
int dx[4] = {0, 0, 1, -1}; // 상, 하, 좌, 우
int dy[4] = {1, -1, 0, 0};
int solution(vector<vector<string>> board, int h, int w) {
int answer = 0;
for (int i = 0; i < 4; i++) {
int nx = h + dx[i];
int ny = w + dy[i];
// 범위 체크
if (nx < 0 || ny < 0 || nx >= board.size() || ny >= board[0].size()) continue;
// 동일한 값인지 확인
if (board[h][w] == board[nx][ny]) answer++;
}
return answer;
}
예제 입력:
board = [["A", "B", "A"],
["B", "A", "B"],
["A", "B", "A"]]
h = 1, w = 1
예제 출력:
4
코드 설명
- 핵심 알고리즘: 현재 위치
(h, w)
를 기준으로 상하좌우의 값을 비교하여 같은 값이 몇 개 있는지 계산합니다. - 구현 세부사항:
dx, dy
배열을 이용하여 4방향 탐색을 수행합니다.- 배열의 범위를 벗어나는 경우를 체크하여 예외를 방지합니다.
- 현재 위치의 값과 비교하여 동일한 경우
answer
값을 증가시킵니다.
- 시간 복잡도: O(1), 항상 4개의 방향만 탐색하므로 상수 시간
결과
주어진 좌표를 기준으로 상하좌우에 같은 값이 몇 개 있는지 정확히 계산합니다. 2차원 배열 탐색을 연습하는 데 적합한 문제입니다. 추가적인 질문이나 개선 사항이 있다면 댓글로 알려주세요!
728x90
반응형
LIST
'programmers' 카테고리의 다른 글
프로그래머스 [연습문제 / 덧칠하기](C++) -yes6686- 티스토리 (0) | 2025.02.08 |
---|---|
프로그래머스 [[PCCE 기출문제] 10번 / 데이터 분석](C++) -yes6686- 티스토리 (1) | 2025.02.07 |
프로그래머스 [연습문제 / 공원 산책](C++) -yes6686- 티스토리 (1) | 2025.02.06 |
프로그래머스 [연습문제 / 추억 점수](C++) -yes6686- 티스토리 (0) | 2025.02.05 |
프로그래머스 [메뉴 리뉴얼](C++) -yes6686- 티스토리 (0) | 2025.02.04 |