https://school.programmers.co.kr/learn/courses/30/lessons/12981
내풀이방법
wordStack - words 배열의 요소를 차곡차곡 받을 문자열 배열
1. for in 반복문으로 words의 모든 요소에 접근할 수 있도록함
반복문이 돌때마다 접근하는 words요소를 담을 word 변수 생성
2. wordStack에 매번 반복문이 끝날때마다 word를 추가하도록함
wordStack.append(word)
3. wordStack이 .contains()메서드를 이용하여 word를 가지고 있을경우에 [i%n +1, i/n +1]를 리턴하도록함
i%n +1는 인덱스를 n으로 나눌경우 나머지가 n-1이기떄문에 +1을 해줌
i/n +1는 처음 시작할경우가 1이기때문에 인덱스를 n으로 나눈 몫에 +1을 해주어야함
4. 전에 단어의 마지막 알파벳과 현재 단어의 첫번쨰 알파벳을 비교해서 같을 경우를 따질때
wordStack의 갯수가 0개가 아니여야함
if wordStack.count != 0{
}
word의 전에 단어인 wordStack[i-1]의 값을 가진 pastWord 변수를 생성
removeLast(),와 removeFirst() 메서드를 이용할 것임
removeLast로 tank라는 글자의 마지막 알파벳을 지우면 다음과 같지만
removeLast() 에 접근하면 k가 출력되는 것을 볼 수 있음 First도 마찬가지 개념임
pastWord.removeLast() 마지막 문자와, word의 첫번째 문자가 같지 않으면
마찬가지로 [i%n +1, i/n +1]를 리턴하도록함
5. if 조건문이 실행되지 않으면 탈락자가 생기지 않는다는 것과 마찬가지기 떄문에 return [0,0] 으로 반환하면 됨
import Foundation
func solution(_ n:Int, _ words:[String]) -> [Int] {
var wordStack: [String] = []
for i in 0..<words.count{
var word = words[i]
if wordStack.contains(words[i]){
return [i%n + 1, i/n + 1]
}
if wordStack.count != 0{
var pastWord = wordStack[wordStack.count - 1]
if pastWord.removeLast() != word.removeFirst(){
return [i%n + 1, i/n + 1]
}
}
wordStack.append(words[i])
}
return [0,0]
}
기본 3개의 예제는 통과하지만 나머지 문제들을 통과 못해서 리셋함 ..
첫번쨰 try한 코드
import Foundation
func solution(_ n:Int, _ words:[String]) -> [Int] {
var stackWords = [String]()
var result = [Int]()
for i in 0..<words.count - 1{
let mapWords = words[i].map({String($0)})
let NextmapWords = words[i+1].map({String($0)})
if mapWords[mapWords.count-1] != NextmapWords[0]{
if (i+2) % n == 0{
result.append(n)
result.append((i+2) / n)
}else{
result.append((i+2) % n)
result.append((((i+2) / n) + 1))
}
}
}
for i in 0..<words.count{
if stackWords.contains(words[i]){
if (i+1) % n == 0{
result.append(n)
result.append((i+1) / n)
}else{
result.append((i+1) % n)
result.append((((i+1) / n) + 1))
}
break
}else{
stackWords.append(words[i])
}
}
if result.count == 0{
return [0,0]
}
return result
}
solution(2,["hello", "one", "even", "never", "now", "world", "draw"])
'Swift랑 친해지기 > programmers 풀기' 카테고리의 다른 글
[프로그래머스] 옹알이 (Swift) (1) | 2022.10.04 |
---|---|
[프로그래머스] 짝지어 제거하기 (Swift) (0) | 2022.09.30 |
[프로그래머스] 카펫 (Swift) (0) | 2022.09.27 |
[프로그래머스] 숫자 문자열과 영단어 (Swift) (1) | 2022.09.25 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (Swift) (1) | 2022.09.25 |