[백준] 1326번: 폴짝폴짝

2024. 9. 9. 23:44·코딩테스트/BOJ

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

난이도: 실버2

▶ 문제 탐색하기

재귀함수를 이용해서 최소한 점프할 수 있는 방법을 탐색한다. 

 

◇ 입력

  1. 징검다리 개수 N (1~10,000 정수)
  2. N개의 징검다리에 쓰여진 자연수 ---> arr =[]
  3. 시작 a번째 징검다리, 도착 b번째 징검다리

 ◇ 원하는 출력 조건

  1.  a번 징검다리에서 b번 징검다리로 최소 몇 번 점프해서 갈 수 있는지? 
  2. 만약 갈 수 없다면 -1 출력  

가능한 시간복잡도 

 

알고리즘 선택

- BFS 알고리즘 사

▶ 코드 설계하기

 1. 가장 먼저, arr[ a-1 ] 시작점 값과 뛰어야하는 전체 거리 ( b-a )를 찾는다. 

 

 2. 만약 전체 거리가 시작점 값으로 나누어 떨어진다면 한 번에 뛰어 건널 수 있다.

①  if (b-a) % arr[a-1] == 0,  return 1

②  else: 나머지가 생긴가면? 극한의 상황을 생각해야하는데

 

 3. a에서 b로 갈 수 없는 경우? return -1

① 시작점 값 arr[ a-1 ] 이 전체 거리 ( b-a ) 보다 클 때

② if (b-a) % arr[a-1] == 0,  return 1

 

▶ 회차별 수정사항

  • 개구리는 앞으로만 움직인다고 생각했는데 그런 조건은 적혀있지 않았다. 앞뒤로 움직일 수 있는 개구리였다
  •  

▶ 정답 코드

# 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' 카테고리의 다른 글

[백준] 2839번: 설탕 배달 (파이썬)  (0) 2024.09.21
[백준] 4963번: 섬의 개수  (0) 2024.09.10
[백준] 5585번: 거스름돈  (0) 2024.07.15
[백준] 2578번: 빙고  (0) 2024.07.01
[백준] 25305번: 커트라인  (0) 2024.06.28
'코딩테스트/BOJ' 카테고리의 다른 글
  • [백준] 2839번: 설탕 배달 (파이썬)
  • [백준] 4963번: 섬의 개수
  • [백준] 5585번: 거스름돈
  • [백준] 2578번: 빙고
뚱이, 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
    현차 3월 자율주행
    evs37sdv
    헤네스
    software defined vehicle
    tar압축풀기
    우분투터미널
    현대자동차최종면접결과
    현대자동차 자율주행
    현차떨
    현대자동차 자율주행 서류 합격 후기
    현대자동차 연구개발
    자율주행자동차
    현대자동차최종불합
    evs37 sdv
    자율주행경진대회
    현대자동차 서류합격후기
    현차 3월 신입 서류
    오블완챌린지
    정렬
    심포지움
    tar 파일
    자율주행
    rc카
    현차 자율주행
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
뚱이, not a starfish
[백준] 1326번: 폴짝폴짝
상단으로

티스토리툴바