[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임

2023. 2. 12. 16:02·Coding Test/Programmers_Python
728x90

문제를 제대로 파악한 후 시나리오를 미리 따로 적어두고 코드를 작성하면 크게 어렵지 않게 풀 수 있는 문제인 것 같다


문제

화면의 구성, 규칙을 다음과 같이 설정 할 예정이다

1. 게임 화면은 N x N 크기의 격자이다

2. 위쪽에는 크레인이 있고, 오른쪽에는 바구니가 있다

3. 각 격자마다 다른 속성의 인형이 있고, 인형이 없는 칸은 공백이다

4. 각 인형들은 아래에서부터 차곡차곡 쌓여있다

5. 크레인을 멈춘 위치에서 인형을 들어올릴 수 있다

6. 집어올린 인형이 바구니에 들어가면 아래에서 부터 쌓인다

7. 바구니에 같은 속성의 두 개의 인형이 두 개 붙으면 사라진다

8. 바구니는 모든 인형이 들어갈 정도로 크다


무엇을 확인해야할까?

1. board 배열은 N x N 형태로 ( 5 <= N <= 30 )

2. board의 각 칸에는 0~100인 정수가 담겨있다

3. moves 배열의 크기는 1~1000이다

5. 모든 크레인을 작동시킨 이후의 바구니를 확인한다

6. 무한반복을 통해 사라진 인형의 전체 개수를 구하고 빠져나온다 - 이 부분 간과했다가 20분 날림

7. 올바른 답안 출력


입출력 예 분석

board에는 배열이 다음과 같이 들어있다

[0, 0, 0, 0, 0]
[0, 0, 1,  0, 3]
[0, 2, 5, 0,  1]
[4, 2, 4, 4, 2]
[3, 5, 1, 3,  1]

이를 통해 다음과 같은 풀이방법을 예상해 볼 수 있다

1. board의 1 번째 배열부터 moves의 n번째 위치에 있는 지 확인하면 될 것이다

2. 하나씩 넘겨보면서 확인해보다가 0이 아닌 값이 들어있으면 바구니에 하나씩 append한다

  • 이 때, 바구니에 값이 하나라도 들어있고, 가장 마지막 값이 지금 넣으려는 값과 동일하다면 append 대신 기존에 있던 값을 pop한다
  • 그 후 result의 값을 1 증가시킨다

3. 전체를 돌아봤는데도 board의 현재 위치의 move자리에 없다면 append하지 않는다

 

 


코드 작성

def solution(board, moves):
    answer = 0
    # 바구니 배열로 선언
    basket = []
    # 움직인 위치에서 board 한 층 씩 살펴보며 0이 아니면 바구니에 담기
    for m in moves:
        for bo in board:
            if bo[m-1] != 0:
                basket.append(bo[m-1])
                bo[m-1] = 0
                break
    # 바구니에 담긴 전체 배열을 무한반복시키며 인형을 없앨 수 없을 때까지 반복
    # count를 통해 인형이 사라지지 않는다면 반복문을 끝내고 결과를 출력
    while True:
        count = 0
        for i in range(1, len(basket)):
            if basket[i] == basket[i-1]:
                answer += 2
                count += 1
                basket.pop(i)
                basket.pop(i-1)
                break
        if count == 0:
            break

    return answer

실행 결과

정상적으로 실행된다!


End

728x90
저작자표시 비영리 변경금지 (새창열림)

'Coding Test > Programmers_Python' 카테고리의 다른 글

[프로그래머스] 문자열 나누기  (0) 2023.02.12
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - 신규 아이디 추천  (0) 2023.02.12
[프로그래머스] 2020 카카오 인턴십 - 키패드 누르기  (0) 2023.02.12
[Python] 오늘의 연습 문제 풀기 5편  (0) 2022.12.01
[Python] 프로그래머스 코딩테스트 입문 Day1  (0) 2022.12.01
'Coding Test/Programmers_Python' 카테고리의 다른 글
  • [프로그래머스] 문자열 나누기
  • [프로그래머스] 2021 KAKAO BLIND RECRUITMENT - 신규 아이디 추천
  • [프로그래머스] 2020 카카오 인턴십 - 키패드 누르기
  • [Python] 오늘의 연습 문제 풀기 5편
ThreeLight
ThreeLight
ThreeLight Studio의 블로그, TimeMap.exe에 오신 것을 환영합니다.
  • ThreeLight
    TimeMap.exe
    ThreeLight
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Checkpoint (1)
      • (3D)Dev Deep Dive (0)
        • Templates & Guides (9)
        • Frontend origin (9)
        • Backend origin (1)
        • TroubleShootings (4)
      • Development Study (95)
        • Frontend (36)
        • Backend (21)
        • CS(Computer Science) (2)
        • Background Knowledges (11)
        • Algorithm (2)
        • Mobile (3)
        • AWS (6)
        • Python (6)
        • MSW(MapleStoryWorlds) (8)
      • Coding Test (59)
        • 문제.zip (1)
        • BaekJoon_JavaScript (0)
        • Programmers_JavaScript (9)
        • BaekJoon_Python (23)
        • Programmers_Python (10)
        • Undefined_Python (3)
        • Programmers_SQL (13)
      • 활동내역.zip (43)
        • 개인 (21)
        • Techeer (12)
        • Bootcamp (7)
        • Hackathon (1)
        • TeamProjects (2)
      • 여기 괜찮네??(사이트 | App) (5)
      • 재미있는 주제들 (8)
      • 개발 외 공부 저장소 (11)
        • 생산운영관리 (3)
        • 생활속의금융 (6)
        • 경영정보시스템 (2)
  • 링크

    • TimeMap.dmg (Portfolio)
    • GitHub 바로가기
    • 오픈프로필(카카오톡)
    • Medium 바로가기
    • Disquiet 바로가기
    • LinkedIn 바로가기
  • 인기 글

  • 태그

    HTML
    JavaScript
    SQL
    CSS
    react
    TypeScript
    Baek Joon
    Python
    프로그래머스
    programmers
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
ThreeLight
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임
상단으로

티스토리툴바