[백준] 2455번 - 지능형 기차 (파이썬)

2022. 9. 5. 18:20·🎲 알고리즘 공부/백준

[문제]

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.

예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.

이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.

  1. 기차는 역 번호 순서대로 운행한다.
  2. 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
  3. 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
  4. 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.

4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때, 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.

 

 

입출력 예시

 

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

 

2455번: 지능형 기차

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.

www.acmicpc.net

 


🎨 풀이

💡 전체 코드

import sys

total = 0
max = 0

for _ in range(4):
    a, b = map(int, sys.stdin.readline().split())

    total = total - int(a)

    if max < total :
        max = total

    total = total + int(b)

    if max < total :
        max = total

print(max)

> 핵심 : 더하기 전에 한 번 비교, 더한 후에도 한 번 더 비교

 

 

 

🍦 코드 설명 (실행 순서대로 나열)

# main

total = 0
max = 0

1. total과 max 변수를 0으로 초기화한다.

 - total : 기차에 타고 있는 사람 수

 - max : 기차에 사람이 가장 많을 때의 수

 

for _ in range(4):
    a, b = map(int, sys.stdin.readline().split())

    total = total - int(a)

    if max < total :
        max = total

    total = total + int(b)

    if max < total :
        max = total

2. for문을 4번 반복한다. (4개의 역이 있기 때문)

3. a와 b를 입력받는다.

 - a : 역에서 내린 사람 수

 - b : 역에서 탄 사람 수

 

4. total에서 a를 빼준다.

5. max가 total보다 많다면, max에 total을 넣는다.

 - 현재 기차에 타고 있는 사람 수가 max보다 많다는 뜻이기 때문이다!!

6. total에 b를 더해준다.

7. 다시 한 번 max와 total을 비교해준 후, total이 더 크면 max에 total 값을 넣는다.

 

print(max)

8. max를 출력한다.


끝~

⭐ 느낀점

> 다 풀고나서 다른 사람들의 코드를 좀 보니까.. 굳이 한 타임에 두번이나 비교해줄 필요가 없는 것 같더라. 생각해보니 그게 맞는 것도 같다. 빼주는데 어떻게 거기서 더 큰 숫자가 나오나. 역시 내 코드에만 갇혀있지않고 다른 사람들 코드 참고하는 것도 좋은 듯하다. 생각의 범위가 넓어진 기분이다. 좋네~ 

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 2953번 - 나는 요리사다 (파이썬)  (0) 2022.09.07
[백준] 2902번 - KMP는 왜 KMP일까? (파이썬)  (0) 2022.09.06
[백준] 1032번 - 명령 프롬프트 (파이썬)  (0) 2022.09.04
[백준] 2490번 - 윷놀이 (파이썬)  (0) 2022.09.03
[백준] 2442번 - 별 찍기 5 (파이썬)  (0) 2022.09.02
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 2953번 - 나는 요리사다 (파이썬)
  • [백준] 2902번 - KMP는 왜 KMP일까? (파이썬)
  • [백준] 1032번 - 명령 프롬프트 (파이썬)
  • [백준] 2490번 - 윷놀이 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    코드업
    행렬덧셈
    스프링 부트
    컨텐더스
    프로그래머스
    코테
    nodejs
    찬양추천
    코린이
    파이썬
    정보처리기사
    정처기
    6월 목표
    폰켓몬
    카카오
    til
    오버워치
    연습문제
    codeup
    충무로
    신입일기
    BOJ
    코민이
    백준
    티스토리챌린지
    50문답
    오블완
    스프링부트
    일기
    피보나치수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 2455번 - 지능형 기차 (파이썬)
상단으로

티스토리툴바