[Python] 백준/BOJ 2597번: 줄자접기 (Silver 3)

2025. 8. 26. 18:51·Algorithm/백준 (BOJ)
반응형

💻 Problem

문제 보러 가기

 

준성이는 1㎝ 간격으로 눈금이 매겨져 있는 줄자를 가지고 있다. 그 줄자에 있는 서로 다른 눈금 6개에 한 눈금에 하나씩 점이 찍혀 있는데, 빨간 점, 파란 점, 노란 점이 각각 두 개씩 있다.

준성이는 먼저 빨간 점이 만나도록 줄자를 접었다. 그런 후 두 파란 점이 만나도록 줄자를 접고, 또다시 두 노란 점이 만나도록 줄자를 접었다. 줄자는 투명하여 접더라도 점들을 잘 볼 수 있다. 어떤 색깔의 두 점이 만나도록 줄자를 접었을 때, 그다음에 접으려는 색깔의 두 점이 이미 만나고 있으면, 그 두 점에 대해서는 줄자를 접지 않는다.

예를 들어 길이 10㎝ 인 줄자에 아래 그림과 같이 2㎝ 와 7㎝ 위에에 두 빨간 점이 찍혀 있고, 5㎝ 와 4㎝위치에 파란 점이, 10㎝ 와 3㎝ 위치에 노란 점이 찍혀 있다고 하자. (그림에서 빨간 점은 별표로, 파란 점은 동그라미, 그리고 노란 점은 네모로 표시되어 있다.) 빨간 두 점이 만나도록 줄자를 접으면 줄자의 4.5㎝ 위치에서 접히고 4㎝ 와 5㎝ 눈금이 서로 만나게 된다. 그러면 줄자의 왼쪽 부분의 길이는 4.5㎝이고 오른쪽 부분의 길이는 5.5㎝가 되어, 접힌 줄자의 길이는 5.5㎝ 가 된다. 파란 두 점은 이미 만나므로 줄자를 접지 않고, 그런 다음 노란 두 점이 만나도록 접으면 줄자의 길이는 3.5㎝ 가 된다.

줄자의 길이와 각 색깔의 점들이 찍혀있는 위치가 주어질 때, 준성이가 빨간 색, 파란색, 노란색의 순서로 두 점이 만나도록 줄자를 접으면 줄자의 길이가 얼마가 되는지를 구하는 프로그램을 작성하시오.

 

💡 Approach

처음에는 줄자를 접었을 때 점의 위치도 반대쪽으로 찍혀야 되는지 모르고 틀렸다.

점을 반대쪽으로 찍혀야 한다는 걸 알았을 때는 어느 방향을 접어야 할지 고민됐다..

접었을 때 더 긴 길이가 줄자의 접은 길이가 된다는 건 아는데, 어느 쪽으로 접히느냐에 따라 위치 갱신을 다르게 해줘야 한다고 생각해서 머리가 너무 복잡했다..

 

이 고민은 mid(줄자를 접은 위치)를 0으로 잡으면 된다는 걸 깨닫고 바로 해결됐다.

줄자의 길이가 10이고 4.5에서 접었으면 4.5~10 이 부분을 써야 한다고 생각해서 접은 위치들을 다 기록해야 되나? 싶었는데..

접은 정보를 가지고 mid를 0으로 새로 줄자를 만든다고 생각하면 된다.

예시의 경우, 빨간 점을 기준으로 접으면 mid가 4.5니까 mid 기준으로 파란색 왼쪽 점은 0.5, 파란색 오른쪽 점은 0.5, 노란색 왼쪽 점은 1.5, 노란색 오른쪽 점은 5.5가 되는 것이다.

 

mid를 0이라고 생각하니 쉬운 문제였다..!

그걸 알고나니 바로 풀렸다.

 

✏️ Solution

import sys
input = sys.stdin.readline

length = int(input())
dot = [list(map(int, input().split())) for _ in range(3)]
mid = 0

for i in range(3):
    l, r = dot[i]

    if l == r:
        continue

    mid = (l + r) / 2

    for j in range(i + 1, 3):
        dot[j][0] = abs(mid - dot[j][0])
        dot[j][1] = abs(mid - dot[j][1])
    
    length = max(mid, length - mid)

print(length)

 

반응형
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 5376번: 소수를 분수로 (Silver 1)
  • [Python] 백준/BOJ 18234번: 당근 훔쳐 먹기 (Gold 3)
  • [Python] 백준/BOJ 5545번: 최고의 피자 (Silver 3)
  • [Python] 백준/BOJ 17291번: 새끼치기 (Silver 2)
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (204) N
      • SSAFY (10)
      • Algorithm (120) N
        • 이론 (6)
        • 백준 (BOJ) (112) N
        • 프로그래머스 (1)
        • 코드트리 (1)
      • Trouble Shooting (9)
      • Frontend (7)
      • React (17)
      • Next.js (4)
      • Vue (4)
      • Node.js (2)
      • HTML (9)
      • DevOps (4)
        • Git (4)
      • Language (9)
        • JavaScript (0)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
      • 기타 (1) N
        • Tistory (1) N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    싸피
    React
    중복순열
    SSAFYcial
    재귀
    백준
    알고리즘
    Heap
    구현
    브루트포스
    티스토리챌린지
    html5
    SSAFY
    힙
    파이썬
    dfs
    백트래킹
    Algorithm
    우선순위큐
    bfs
    DP
    Java
    그리디
    Error
    수학
    강의
    Next.js
    블록체인
    오블완
    순열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
올콩
[Python] 백준/BOJ 2597번: 줄자접기 (Silver 3)
상단으로

티스토리툴바