● 문제 핵심
- 기존 글자를 거꾸로 했을때와 같을때 비교

입력의 마지막 줄에 0이 나오면 받지 않는다고 되어 있는데 이것을 구현하는데 While문을 사용했다.
var inputArray: [String] = []
while true {
let input = readline()!
// "0"이 들어오면 반복문 종료
if input == "0" {
break
}
// 배열에 담아주기
inputArray.append(input)
}
// 여기서 조건이 없으면 계속 받게 되고 탈출 할 수 없게 된다.
// 필요한 조건은 마지막 줄에 0 이 나오면 반복문을 끝내는 조건을 추가해준다.
여기까지 구현했으면 다 풀었다 봐도 무방하다
이제 배열에 담긴 문자를 거꾸로 한것과 비교하는 코드는 작성하면 된다.
var inputArrayReversed: [String] = inputArray.map { $0.reversed() }
// for문을 사용해서 만들기
var inputArrayReversed: [String] = []
for i in inputArray {
inputArrayReversed.append(i.reversed())
}
자 이렇게 만들면 오류가 발생하는 걸 알 수 있다.
공식문서에서 reversed()를 찾아보면

리턴값이 ReversedCollection<Self>로 되어있다.... 즉 타입 오류로 인해 발생하는 컴파일 오류이고 고쳐보도록 하자
var inputArrayReversed: [String] = inputArray.map { String($0.reversed()) }
// for문을 사용해서 만들기
var inputArrayReversed: [String] = []
for i in inputArray {
inputArrayReversed.append(String(i.reversed()))
}
String으로 형 변환해주면 간단하게 해결 된다.
그렇다면 reversed()값도 있으니 기존의 값과 비교해서 yes or no만 출력해주면 된다.
아래는 전체 코드다.
import Foundation
var inputArray: [String] = []
while true {
let input = readLine()!
if input == "0" {
break
}
inputArray.append(input)
}
var inputReversedArray: [String] = inputArray.map { String($0.reversed()) }
print("inputReversedArray",inputReversedArray)
for i in 0..<inputArray.count {
if inputArray[i] == inputReversedArray[i] {
print("yes")
} else {
print("no")
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 LV.2 영어 끝말잇기 (0) | 2023.07.23 |
---|---|
프로그래머스 LV.1 개인정보 수집 유효기간 스위프트 (0) | 2023.05.22 |
프로그래머스 LV.1 달리기 경주 스위프트 (0) | 2023.05.15 |
프로그래머스 LV.1 성격 유형검사하기 스위프트 (1) | 2023.05.13 |
프로그래머스 LV.1 크레인 인형뽑기 게임 스위프트 (0) | 2023.05.09 |