[Swift]BOJ-9093

BOJ-9093, 단어 뒤집기

문제 📑

https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

문제 정리 ▾

BOJ-9093

  1. 문장의 개수를 입력받는다.
  2. 그 후 문장을 입력하고 띄어쓰기를 기준으로 단어들을 뒤집어 출력시키면 된다.

 

접근 🚶🏻

나의 생각 ▾

  • 뒤집는다에서 내 머릿속엔 reversed() 메서드가 생각이 났다.
  • 적절한 for문과 forEach문을 사용한다면 구현이 가능할 것으로 판단이 되었다.

 

나의 해결 ▾

import Foundation

let cnt = Int(readLine()!)!
var result : String = ""

for _ in 0..<cnt {
    let str = readLine()!.split(separator: " ")
    str.forEach {
        result.append(String($0.reversed()) + " ")
    }
    print(result)
    result.removeAll()
}
  • 코드에 관한 내용은 밑에서 살펴보자 😀

 

코드 리뷰 ▾

let cnt = Int(readLine()!)!
var result : String = ""
  • 문장의 개수 변수(cnt)와 결과를 담을 result라는 String형 변수를 선언했다.

for _ in 0..<cnt {
    let str = readLine()!.split(separator: " ")
    str.forEach {
        result.append(String($0.reversed()) + " ")
    }
    print(result)
    result.removeAll()
}
  • cnt만큼 입력을 받게 하는 for문을 하나 넣었다.
  • 이후 임시로 입력을 받을 객체(str)를 선언한다.
  • str은 공백을 기준으로 단어들을 넣은 배열 객체이다.
  • str의 단어 하나하나를 접근하기 위해 forEach문을 사용하고 각각의 단어를 reversed()를 통해 뒤집어 result라는 변수에 넣어주었다.
  • 다 넣으면 출력을 하고, 2번 이상 문장을 입력받기 위해 result를 초기화하는 removeAll()을 추가로 작성했다.

 

Additional 📂

  • 출제자의 의도가 reversed()라는 메서드를 쓸 수 있는가를 묻는 의도는 아니었던 것 같다.
  • 그래도 의도에 맞춰 하나하나 풀기보다 Swift를 최대한 이용하는 방식으로 방향을 잡아 보려고 한다.

'Algorithm.zip' 카테고리의 다른 글

[Swift]BOJ-1406  (0) 2022.02.01
[Swift]BOJ-9012  (0) 2022.01.31
[Swift]BOJ-10828  (0) 2022.01.30
[Swift]BOJ-10815  (0) 2022.01.29
[Swift]BOJ-1158  (0) 2022.01.27