[PCCE 기출문제] 9번 / 이웃한 칸
풀이
어려운 문제는 아니다. 반복문만 쓸 줄 알면 바로 풀 수 있다.
1. 우선 board가 주어지므로 이를 활용한다. 또한 board와 board [n]의 길이는 같음을 인지.
2. 문제에서 적힌대로만 풀어도 문제없지만, 난 내 방식대로 dr, dc를 만들어서 상하좌우로 돌아가는 것을 이용했다. 이때 h가 dr과 w가 dc와 연결된다.
3. 상하좌우 4개이므로 for문을 4까지 반복하면서 각 dr[0]~dr[3], dc [0]~dc [3]을 이용하여, 찾으려는 board의 상, 하, 좌, 우에 같은 색이 있는지 확인한다.
3-1. 이 때, dr과 dc를 사용하다 범위를 벗어나게 되면 런타임에러나 인덱스 아웃이 뜨기에 찾는 범위를 0 <= h+ dr [i] < len(board) 로지 정해준다.
4. 같은 값이 있으면 answer에 +1 하고 끝나면, answer를 return 한다.
# 각 칸마다 색이 칠해진 2차원 격자 보드판 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수
def solution(board, h, w):
N = len(board)
# 상, 하, 좌, 우
dc = [0,0,-1,1]
dr = [-1,1,0,0]
# 상하좌우 몇개가 해당 칸과 같은 색인지 구하기
answer = 0
for i in range(4):
if 0<= h+dr[i] < N and 0<= w+dc[i] < N and board[h][w] == board[h+dr[i]][w+dc[i]]:
answer += 1
return answer
다른 사람 풀이
아래 방법은 d를 이용하지 않고, 모든 방법을 if 문을 이용한 방식이다. 확인해야 하는 구간이 짧다면 문제없지만 길면 작성에 오래 걸리고 또 작성하면서 꼬일 수도 있다.
def solution(board, h, w):
answer = 0
if 0 < h:
if board[h][w] == board[h-1][w]: answer += 1
if 0 < w:
if board[h][w] == board[h][w-1]: answer += 1
if h < len(board) - 1:
if board[h][w] == board[h+1][w]: answer += 1
if w < len(board[0]) - 1:
if board[h][w] == board[h][w+1]: answer += 1
return answer
아래는 당황스러운 코드여서 들고 와봤다.
누군진 몰라도 대단하다.. 엄랭을 가져올 생각을 하다니;;;;;;
사람이름이 어떻게 엄준식.
def solution(엄, 준, 식):
엄준식,어엄,준식 =int(),int(not ()),len(엄)
엄준식화이팅=[[어엄-어엄,어엄],[어엄,어엄-어엄],[-어엄, 어엄-어엄],[어엄-어엄,-어엄]]
for 주운 in 엄준식화이팅:
어떻게,사람이름이=준+주운[어엄-어엄],식+주운[어엄]
if 어엄-어엄 <= 어떻게<준식 and 어엄-어엄<=사람이름이<준식:
if 엄[준][식]==엄[어떻게][사람이름이]:
엄준식+=어엄
return 엄준식
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 이진 변환 반복하기 (python) (0) | 2024.02.01 |
---|---|
프로그래머스 Lv1 [PCCE 기출문제] 10번 / 데이터 분석 (python) (0) | 2024.02.01 |
프로그래머스 스킬체크 레벨 1 통과해따리 (0) | 2024.01.31 |
프로그래머스 LV1 최댓값 구하기 (MySQL) (0) | 2024.01.31 |
프로그래머스 Lv1 가격이 제일 비싼 식품의 정보 출력하기 (MySQL) (0) | 2024.01.31 |