https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
이 문제는 티스토리에 올린 글에서 두 개의 유형을 짜집기해서 금방 풀었습니다.
https://ruo10102.tistory.com/6?category=1007186
[BOJ] 10828번 스택
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고,..
ruo10102.tistory.com
위의 글에서 배운 [::-1] 을 이용하여 문자열을 뒤집어서 출력이 가능하게 하였고,
https://ruo10102.tistory.com/6?category=1007186
[BOJ] 10828번 스택
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고,..
ruo10102.tistory.com
위의 글에서 배운 input 대신 sys.stdin.readline() 을 통해 출력시간을 줄이려고 노력했습니다.
import sys
num = int(input()) #test case는 input으로 받아도 상관 없다.
for _ in range(num): # for문의 값을 이용하지 않을 때는 underbar를 이용하자.
a = sys.stdin.readline().split() #입력 받은 값을 공백으로 분리한다. i am happy 라면 ['i', 'am', 'happy']
for i in a:
print(i[::-1], end=' ') #[::-1]를 통해 값들의 순서를 뒤집고 end=' ' 로 개행문자를 띄어쓰기로 바꾸었다.
#['i', 'ma', 'yppah']
다른 사람의 코드를 한 번 살펴보았다..!
import sys
for i in range(int(sys.stdin.readline())):
word = sys.stdin.readline()[::-1].split()
word.reverse()
# " ".join(list) 로 단어들을 이어 붙임
print( ' '.join(word))
이 분의 코드는 먼저 모든 단어들을 뒤집고 공백으로 나누고 시작했다
즉 " i am happy " 라면
['yppah', 'ma', 'i'] 이렇게 말이다.
이후에 list 를 reverse하면
['i', 'ma', 'yppah'] 이런식으로 출력이 가능하다.
그리고 또 다른 점은 나는 end=' ' 를 이용했지만
print 문에서 join 문을 이용하는 것을 확인할 수 있었다.
Join 은 무슨 기능일까?
한 마디로 문자열을 합치는 기능 !!
>> ''.join(리스트)
>> '구분자'.join(리스트)
join 함수는 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수입니다.
- ''.join(리스트)
''.join(리스트)를 이용하면 매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수인 것입니다.
- '구분자'.join(리스트)
'구분자'.join(리스트)를 이용하면 리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합쳐줍니다.
'_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 줍니다.
'백준' 카테고리의 다른 글
[BOJ] 10828번 스택 (0) | 2022.05.02 |
---|---|
[BOJ] 23080번 스키테일 암호 (0) | 2022.05.01 |