반응형
문제 링크
https://www.acmicpc.net/problem/17413
내가 푼 풀이
- <, > 태그로 구별해야하는 문제인것은 알았지만 while문과 if 문을 중첩해서 새로운 array에 넣어주면서 문제를 풀려고했다. 메모리를 너무 많이 차지할 것 같다.
- 고민해보다가 인터넷을 조금 찾아보니 일반 string으로 더해주고, 초기화해주고, print(terminator) 기능을 이용해서 한줄로 출력할 수 있었다.
- terminator 기능을 기억하자.
▷ 문제 풀이 방식
- <가 발견되면 tag로 넣어주면서 tag랑 word를 구별하기 시작
- >가 발견되면 tag로 넣어주고, <> 가 만들어졌으므로 tag는 모두 생성됨. 따라서 tag를 pring해주고 다시 tag 초기화
- <,> 두개 다 아닌 스트링인데 tag의 첫번째 글자가 < 면 tag를 생성중인것으로 인지하게 하여 tag로 append 해줌
- 만약 뒤집혀야할 단어가 “ “(공백)이면 word를 리버스해서 거꾸로 출력해주고, “ “(공백)을 넣어주면서 print로 합쳐줌
- 모두 해당하지 않으면 word에 append 해줌
- 그리고 이제 마지막에 word에 단어가 남아있다면, reverse 해서 출력해줌.
import Foundation
var s = readLine()!.map{ String($0) }
var tag = ""
var mainWord = ""
for char in s {
if char == "<" {
tag.append(char)
if !mainWord.isEmpty {
print(String(mainWord.reversed()), terminator: "" )
mainWord = ""
}
}else if char == ">" {
tag.append(char)
print(tag, terminator: "")
tag = ""
}else {
if tag.first == "<" {
tag.append(char)
} else if char == " " {
print(String(mainWord.reversed()),terminator: " ")
mainWord = ""
}else {
mainWord.append(char)
}
}
}
if !mainWord.isEmpty {
print(String(mainWord.reversed()), terminator: "")
}
▷ print ( 000, terminator: " ") 살펴보기
출력하고자 하는 000 뒤에 바로 terminator구문이 붙어서 한줄로 출력된다.
var a = "11"
var b = "helo"
print(String(a), terminator: "...")
print(String(b), terminator: "////")
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] (Swift) 1918번 - 후위표기식 (0) | 2022.02.13 |
---|---|
[백준] (Swift) 1935번 - 후위 표기식2 (0) | 2022.02.11 |
[백준] (Swift) 10866번 - 덱(deque) (0) | 2022.02.06 |
[백준] (Swift) 1158번 - 요세푸스 문제 (0) | 2022.02.05 |
[백준] (Swift) 10845번 - 큐 (0) | 2022.02.04 |