[백준] 5585번: 거스름돈

2024. 7. 15. 11:49·코딩테스트/BOJ

https://www.acmicpc.net/problem/5585

난이도: 

▶ 문제 탐색하기

가로, 세로, 대각선으로 그을 수 있는 직선은 총 12개이다. 이중에서 3개를 택하는 조합은 12C3=220가지 이므로 경우의 수가 많지 않다.

 

◇ 입력

  1.  5X5의 빙고판을 입력받은 후, 2차원 배열로 저장한다.
  2.  사회자가 부르는 수를 1차원 배열로 저장한다.

 ◇ 원하는 출력 조건

  1.  1차원 배열에서 5개의 칸이 3번 채워지는 그 순간의 index+1을 출력한다.

▶ 코드 설계하기

 1. 위치 탐색: 사회자가 부르는 숫자가 2차원 배열의 어디에 위치해있는지 찾는다.

 2. 해당 숫자의 index를 저장한다. Q. 이차원배열로 저장할지[[ i, j ], [ i1, j2] ,..].., dict의 형태로 {''row'':col, "row2":col2,...} r고민이다. 아니면 그냥 arr[i][j] 이런 식으로 만들지..

→ marked = [[False]*5 for _ in range(5)]에서 True로 바꿔주기로 했다.

3. 아래 조건들 중 3개를 만족해야한다. 

① 대각선1: arr[0][0] ~ arr[4][4]

② 대각선2: arr[0][4] ~ arr[4][0]

③ 가로: arr[row][0] ~ arr[row][4]

④ 세로: arr[0][row] ~ arr[4][row]

▶ 회차별 수정사항

  • 지원가는 코드를 marked 2차원 행렬로 표현했다.
  • extend() 메서드를 알게 됐다.
  • enumerate() 파이썬 내장 함수에대해서 알게 되었다.

▶ 정답 코드

# 5*5 빙고 array로 입력받고 사회자가 부르는 번호
array, num = [], []
for i in range(5):
  arr = list(map(int, input().split()))
  array.append(arr)
for j in range(5):
  num.extend(map(int, input().split()))
  
# marked를 통해서 부르는 번호를 표시함
marked = [[False]*5 for _ in range(5)]
def bingo_check(marked):
  for _ in range(5):
    cnt = 0
    for i in marked:
      if all(i):
        cnt += 1
    for j in range(5):
      if all(marked[i][j] for i in range(5)):
        cnt += 1
    if all(marked[k][k] for k in range(5)):
      cnt += 1
    if all(marked[k][4-k] for k in range(5)):
      cnt += 1
    return cnt >= 3
# True로 부르는 숫자를 하나씩 지워감
for n in num:
    found = False  
    for i, row in enumerate(array):
        if n in row:
            j = row.index(n) 
            marked[i][j] = True  
            if bingo_check(marked):
                print(num.index(n) + 1) # 몇 번째 숫자로 바꿔준다.
                found = True  
                break  
    if found:
        break

 

▶ 추가 풀이

 

'코딩테스트 > BOJ' 카테고리의 다른 글

[백준] 4963번: 섬의 개수  (0) 2024.09.10
[백준] 1326번: 폴짝폴짝  (0) 2024.09.09
[백준] 2578번: 빙고  (0) 2024.07.01
[백준] 25305번: 커트라인  (0) 2024.06.28
[백준] 5635번: 생일  (0) 2024.06.27
'코딩테스트/BOJ' 카테고리의 다른 글
  • [백준] 4963번: 섬의 개수
  • [백준] 1326번: 폴짝폴짝
  • [백준] 2578번: 빙고
  • [백준] 25305번: 커트라인
뚱이, not a starfish
뚱이, not a starfish
M.S. Student,. Mainly interested in computer vision and autonomous cars
  • 뚱이, not a starfish
    Wilbur-Babo
    뚱이, not a starfish
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • 통신 및 네트워크 (12)
      • Embedded Projects (2)
      • 3D Reconstruction (1)
        • Gaussian Splatting (0)
        • 3D-GS (1)
        • Multi-view Geometry (0)
        • VSLAM (0)
        • Computer Graphics (0)
      • LLM(VLM) (0)
      • AI-Study (28)
        • Mono-Depth (7)
        • Base (2)
        • Computer Vision (1)
        • Image Processing (3)
        • Tiny Object Detection (3)
      • 자율주행 (20)
        • [2023] 1-fifth AA EV (4)
        • [2022] 1-tenth AA EV (2)
        • ROS 1,2 (4)
        • 이론 (7)
        • 실습 (3)
      • Pointcloud (0)
      • sw (16)
        • 정보보안 (1)
        • Android_develop (3)
      • [학부] 전기전자공학 (12)
        • 반도체 (2)
        • 마이크로프로세서 (6)
      • 코딩테스트 (22)
        • BOJ (21)
      • 취준 (21)
        • EVS37 Ambassador (5)
        • 차량 제어 플랫폼 (5)
        • 영어 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    현대자동차최종불합
    자율주행자동차
    현차 자율주행
    현대자동차 서류합격후기
    현차 3월 자율주행
    자율주행
    오블완챌린지
    evs37 sdv
    현대자동차 자율주행
    현대자동차 자율주행 서류 합격 후기
    현차 3월 신입 서류
    tar 파일
    자율주행작품
    헤네스유아용자동차
    software defined vehicle
    오픽후기
    tar압축풀기
    현대자동차최종면접결과
    현대차3월신입후기
    헤네스
    현대자동차 연구개발
    rc카
    evs37sdv
    심포지움
    EVS37
    현차떨
    자율주행시험
    자율주행경진대회
    정렬
    우분투터미널
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
뚱이, not a starfish
[백준] 5585번: 거스름돈
상단으로

티스토리툴바