728x90
문제
한 줄에 이름, 나이, 몸무게가 String 형식으로 입력된다.
나이가 17세보다 많거나, 몸무게다 80kg 이상이면 Senior로
그렇지 않으면 Junior로 출력해야 한다.
원리 및 학습내용
: 파이썬에서의 입출력을 연습하기 위해 진행
풀이 1. Split()
String의 경우, split() 메소드를 호출하면 " "를 기준으로 word 단위로 구분하여 변수를 얻을 수 있다
# 예시
입력이 "alpha beta gamma"일 때,
A, B, C = input().split()
print("A = " + A) # A = alpha
print("B = " + B) # B = beta
print("C = " + C) # C = gamma
풀이 2. Tokenization
파이썬에서 제공하는 Tokenize 라이브러리도 있으며, 필자는 직접 구현한 모듈을 사용했다.
Java의 StringTokenizer 메소드가 익숙하다보니, 파이썬에서 지원하지 않는 모듈은 유사하게나마 직접 구현해야 했다.
# StringTokenizer 모듈
class StringTokenizer:
def __init__(self, string, delimiters):
self.string = string
self.delimiters = delimiters
self.tokens = self.tokenize()
def tokenize(self):
token_list = []
current_token = ""
for char in self.string:
if char in self.delimiters:
if current_token:
token_list.append(current_token)
current_token = ""
else:
current_token += char
if current_token:
token_list.append(current_token)
return token_list
def count_tokens(self):
return len(self.tokens)
def get_token(self, index):
if index < 0 or index >= len(self.tokens):
return None
return self.tokens[index]
# 호출 방법
delimiters = " "
tokenizer = StringTokenizer(input(), delimiters)
A = tokenizer.get_token(원하는 단어의 위치)
나의 코드
풀이 1. 단순히 split으로 해결
while 1 :
name, age, weight = input().split()
if '#' in name : break
if int(age)>17 or int(weight)>=80 : print(f"{name} Senior")
else : print(f"{name} Junior")
풀이 2. StringTokenizer 구현
class StringTokenizer:
def __init__(self, string, delimiters):
self.string = string
self.delimiters = delimiters
self.tokens = self.tokenize()
def tokenize(self):
token_list = []
current_token = ""
for char in self.string:
if char in self.delimiters:
if current_token:
token_list.append(current_token)
current_token = ""
else:
current_token += char
if current_token:
token_list.append(current_token)
return token_list
def count_tokens(self):
return len(self.tokens)
def get_token(self, index):
if index < 0 or index >= len(self.tokens):
return None
return self.tokens[index]
while 1 :
delimiters = " "
tokenizer = StringTokenizer(input(), delimiters)
name = tokenizer.get_token(0)
if name == "#" : break
if int(tokenizer.get_token(1)) >17 or int(tokenizer.get_token(2)) >=80 : print(name + " Senior")
else : print(name + " Junior")
레퍼런스
파이썬 공식문서(Tokenize 라이브러리) : https://docs.python.org/ko/3/library/tokenize.html#tokenize.generate_tokens
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > Python' 카테고리의 다른 글
[파이썬 익숙해지기] no7662: 이중 우선순위 큐 - Heap 트리 및 입출력연습 (0) | 2023.07.08 |
---|---|
[파이썬 익숙해지기] no27866:문자와 문자열 - 문자열 슬라이싱 (0) | 2023.07.07 |
[파이썬 익숙해지기] no18110:Solved.ac - 파이썬 반올림 원리 (0) | 2023.07.06 |
[파이썬 익숙해지기] no16170:오늘의 날짜는? (0) | 2023.06.30 |
[파이썬 익숙해지기] no5341:피라미드 (0) | 2023.06.29 |