[python_파이썬_pass]백준_28702번_FizzBuzz_브론즈1_풀이

2024. 10. 7. 22:01코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/ioCTBnwKKEE?feature=shared

 

처음 문제를 접했을때 고개를 갸웃거렸다.

입력이 주어지면 그게 조건에 따라 출력을 하는 거라고 생각했기 때문이다.

그런데 3개의 입력이 주어지고 1개이 출력이 나와야 하는 문제라서 한참을 다시 봤다.

 

즉, 세개의 입력되는 문자열 다음에 올 문자열을 조건으로 돌려서 최종 값을 출력하는 문제였다.

 

<첫번째/두번째 시도 : 틀렸습니다.>

문제를 이해 못함. => 문제를 대충 보고 판단함 

import sys
input = sys.stdin.readline

for _ in range(3):
  n = input()
  if n == int():
    if int(n) % 3 == 0 and int(n) % 5 == 0:
      print("FizzBuzz")
    elif int(n) % 3 == 0 and int(n) % 5 != 0:
      print("Fizz")
    elif int(n) % 3 != 0 and int(n) % 5 == 0:
      print("Buzz")
  else:
    print(n)

 

<세번째 시도 : 맞았습니다.>

3개의 입력값들중에서 마지막으로 오는 숫자와 해당 index를 구해서 다음에 나올 값(int)를 구한 후 def check(n) 함수를

만들어서 최종 조건을 만족하게 작성했다.

import sys
input = sys.stdin.readline

#다음에 올 문자열 -> 주어진 입력의 마지막 숫자

def check(n):
    if n % 3 == 0 and n % 5 == 0:
        print("FizzBuzz")
    elif n % 3 == 0 and n % 5 != 0: # n%5 != 0 없어도 됨
        print("Fizz")
    elif n % 3 != 0 and n % 5 == 0: # n%3 != 0 없어도 됨
        print("Buzz")
    else:
        print(n)

con = []
temp = 0
last = 0

for _ in range(3):
    a = input().strip()
    con.append(a)
       
for index, i in enumerate(con):
    if i.isdigit():
        temp = index
        last = int(i)
        break

answer = last - index + 3

check(answer)

 

<다른 사람 풀이 참고>

내가 머리속으로 한번 생각한 방식이다. 이걸 코드로 보니 신기하네...

"Fizz" * (n % 3 == 0) 이런식으로 참 / 거짓을 1 / 0으로 생각해서 코드를 구현하는 걸 배우자.

똑똑하네..

for i in range(3, 0, -1):
    x = input()
    if x not in ['Fizz', 'Buzz', 'FizzBuzz']:
        n = int(x) + i
        break
print('Fizz'*(n % 3 == 0) + 'Buzz'*(n % 5 == 0) or n)

 

<기본 함수 정리>

 

  • isalnum()
    • 문자열이 알파벳이나 숫자로만 이루어져 있는지 확인합니다.
    • 예: 'Hello123'.isalnum() → True
  • isdigit()
    • 문자열이 숫자로만 이루어져 있는지 확인합니다.
    • 예: '12345'.isdigit() → True
  • isdecimal()
    • 문자열이 10진수 숫자로만 이루어져 있는지 확인합니다. (숫자 전용 유니코드 포함)
    • 예: '12345'.isdecimal() → True
  • isnumeric()
    • 문자열이 숫자 값(정수, 지수, 분수 등)으로만 이루어져 있는지 확인합니다. 숫자 유니코드 문자를 포함합니다.
    • 예: '12345'.isnumeric() → True
  • islower()
    • 문자열이 모두 소문자인지 확인합니다.
    • 예: 'hello'.islower() → True
  • isupper()
    • 문자열이 모두 대문자인지 확인합니다.
    • 예: 'HELLO'.isupper() → True
  • isspace()
    • 문자열이 공백 문자(스페이스, 탭, 개행)로만 이루어져 있는지 확인합니다.
    • 예: ' '.isspace() → True
  • istitle()
    • 문자열이 제목 형식(각 단어의 첫 글자가 대문자)인지 확인합니다.
    • 예: 'Hello World'.istitle() → True
  • isprintable()
    • 문자열이 출력 가능한 문자로만 이루어져 있는지 확인합니다. (출력 불가능한 제어 문자는 제외)
    • 예: 'Hello'.isprintable() → True
  • isidentifier()
    • 문자열이 유효한 파이썬 식별자인지 확인합니다.
    • 예: 'variable_1'.isidentifier() → True

 

728x90
반응형