알고리즘(백준)/구현

[알고리즘/구현] 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. 구현의 로직을 조금 복잡하게 구현해서 시간이 많이 소요되었다. 경우의 수를 다 고려할 수 있으면 괜찮지만 복잡해지면 논리적 공백이 발생할 수 있다. 주의하자