문제 이해
제가 영어가 약해서 이해하는 게 어려웠습니다...ㅠ
문제는 간단합니다!
두 변수 n(책의 총 쪽수)과 p(내가 피고 싶은 쪽수)를 주면 ouput을 리턴해주는 함수(pageCount)를 만들면 됩니다.
문제에서의 조건은 첫 페이지에서 시작하거나 마지막 페이지에서 시작하여 p 페이지까지 가는 최소 책을 넘기는 수입니다.
물론 책은 한 번에 한 장씩만 넘깁니다.
정리하면
조건 1. 시작하는 페이지는 첫 페이지 또는 끝 페이지이다.
조건 2. 페이지는 한 번에 1장씩만 넘길 수 있다.
조건 3. 페이지를 넘길 필요가 없으면 0을 출력하면 된다.
여기까지 문제에 대한 설명입니다.
다음은 문제 풀이에 도움이 되는 힌트?를 드리겠습니다.
스
포
방
지
.
.
.
.
.
.
.
.
.
문제 힌트
시작하는 경우가 첫 페이지에서 시작 또는 마지막 페이지에서 시작 이렇게 2가지 경우가 있기 때문에 어떤 조건을 줘야 하는지 생각해야 합니다. 추가로 n과 p의 상황에 따른 추가 조건이 필요한지 생각해봅니다.
다음은 각각의 경우에서 어떤 규칙으로 답을 구할 수 있는지 생각하면 됩니다.
규칙을 찾기 어려우신 분들은 작은 수를 사용하여 모두 구해보고 규칙을 찾아보면 쉽습니다. (예시: n=7 /n=6)
또한 규칙이 안 통하는 예외 상황이 있나 생각하며 풀어주면 됩니다.
다음은 저의 코드를 올리면서 마치겠습니다.
스
포
방
지
.
.
.
.
.
.
.
.
.
참고로 저는 파이썬을 이용하여 풀었습니다.
#!/bin/python3
import math
import os
import random
import re
import sys
#
# Complete the 'pageCount' function below.
#
# The function is expected to return an INTEGER.
# The function accepts following parameters:
# 1. INTEGER n
# 2. INTEGER p
#
def pageCount(n, p):
# Write your code here
if n == p:
return 0
if n//2 < p:
if n % 2 == 1:
ans = (n - p) // 2
else:
ans = (n + 1 - p) // 2
else:
ans = p//2
return ans
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
n = int(input().strip())
p = int(input().strip())
result = pageCount(n, p)
fptr.write(str(result) + '\n')
fptr.close()'Algorithms > 문제 풀이' 카테고리의 다른 글
| [Programmers]N-Queen (1) | 2024.07.31 |
|---|---|
| [HackerRank] Weighted Uniform Strings (0) | 2022.12.01 |
| [HackerRank]Two Characters (0) | 2022.12.01 |
| [HackerRank]Climbing the Leaderboard (0) | 2022.11.30 |
| [HackerRank]Matrix Layer Rotation (1) | 2022.11.30 |