[Swift] 백준 17413 - 단어뒤집기 2

sun02·2021년 11월 9일
0

알고리즘

목록 보기
10/52

문제 링크

출력할 때 태그 안의 문자는 뒤집히지 않고, 태그 밖의 단어들은 공백을 기준으로 나뉘어져 뒤집어지기에 이 둘을 기준으로 잡아야했다.
뒤집어지지 않는 태그는 tag로, 뒤집어지는 단어는 word로 구분한다.

먼저 for루프문을 사용하여 입력 받은 문자열에서 해당 character가

  • 태그의 시작인 "<"이라면, tag에 append해주고, 만약 word가 비어있지 않다면 word를 뒤집어 출력한다.
  • 태그의 끝인 ">"이라면, tag에 append한 뒤 tag를 출력하고 tag를 빈 문자열로 만든다.
  • 그 외의 경우, 만약 tag의 첫번째 character가 "<"라면, tag에 append하고 그렇지 않고 " "(공백)이라면 word를 뒤집어 출력하고, 둘 다 아니라면 뒤집기를 할 배열 word에 append한다.

풀이 코드


import Foundation

let a = readLine()!

var tag = ""
var word = ""

for char in a {
    
    if char == "<" {
        
        tag.append(char)
        if !word.isEmpty {
            print(String(word.reversed()),terminator: "")
            word = ""
        }
        
    } else if char == ">" {
        
        tag.append(char)
        print(tag,terminator: "")
        tag = ""
        
    } else {
        
        if tag.first == "<" {
            tag.append(char)
        } else if char == " " {
            print(String(word.reversed()),terminator: " ")
            word = ""
        } else {
            word.append(char)
        }
    }
}

if !word.isEmpty {
    print(String(word.reversed()))
}
  • String에 reversed()를 사용하는 경우,결과를 "ReversedCollection<string" 타입으로 반환하기 때문에 String()으로 타입을 결정해주어야한다.

1개의 댓글

comment-user-thumbnail
2022년 1월 16일

swift는 알고리즘공부를 어떻게하셧는지 알수있을까요?

답글 달기