알고리즘(백준)/구현
[알고리즘/구현] 17413번 : 단어 뒤집기 2 - python
되다
2023. 4. 18. 16:26
링크 : https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
- 문제
- 소요시간: 40분 12초
- 설계하기(접근방법)
1. 문자열을 입력받는다
2. 구현
1)괄호 내의 문자열은 그대로 출력한다
'<' 가 오는 경우 flag = 1로 해준다
'>' 가 올때까지 new_char에 문자를 더해주고,
'>' 가 오면 flag = 0 으로 해준다
2)괄호가 없는 문자열은 공백으로 구분되며, 각각의 문자열을 뒤집는다.
flag = 0일 때 temp_char 에 문자를 더해준다
' '(공백) 혹은 '<'가 오면 문자열이 끝난 것이므로
temp_char에 있던 문자열을 뒤집어서 new_char에 더해준다
3. 문자열을 출력한다
- 코드(출력)
char = input()
new_char = ''
temp_char = ''
flag = 0
for i in range(len(char)):
if flag == 0 and char[i] == ' ': # 괄호 내 문자열이 아닐(flag = 0) 때 공백이 나타나면 temp 뒤집어 더해준다
new_char += temp_char[::-1]
temp_char = '' # temp 초기화
if char[i] == '<': # '<' 가 시작되면 flag = 1로 바꿔주고 이때까지 temp에 더해진 문자열을 뒤집어 더해준다
flag = 1
new_char += temp_char[::-1]
temp_char = ''
if flag == 1:
new_char += char[i] # 괄호 내의 문자열은 그대로 더해준다
if flag == 0: #
if char[i] == ' ':
new_char += ' ' # 공백으로 끝날을 때 띄어쓰기를 해준다
else:
temp_char += char[i] # temp에 char을 더해나간다
if char[i] == '>':
flag = 0
new_char += temp_char[::-1] # 문자열이 종료될 때는 공백으로 인식되지 않기 때문에 temp를 더해준다
print(new_char)
- 얻어갈 부분
1. 구현의 로직을 조금 복잡하게 구현해서 시간이 많이 소요되었다. 경우의 수를 다 고려할 수 있으면 괜찮지만 복잡해지면 논리적 공백이 발생할 수 있다. 주의하자