본문 바로가기
Algorithm

[Algorithm] Swift 백준 1316번

by ykr0919 2023. 11. 4.

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

문제 접근 

 

생각했던 풀이법

 

문자를 받았을 때 같은 문자를 문자열로 변경하여 자리위치를 숫자로 변경한 다음에 숫자가 이어지지 않으면! 예를 들어 'a'가 0번 1번 2번에 위치할 때 마지막 'a'는 6번에 위치해 있으니깐 3번 4번 5번이 'a'가 아니기 때문에 연속해서 나타나는 것이 아니구나!!라고 판단하여 그룹단어가 아니다!! 이런 식으로 접근을 해보았습니다. 

 

하지만 어떤 문자가 들어올지 알 수가 없기 때문에 매번 0번째가 어떤 문자인지 파악해야 하고, 문자열에서 몇 번째에 글자가 있는지는 알 수 있는 방법이 있었지만 문자열에서 어떤 글자가 문자열의 어떤 위치에 있는지 전부 찾아내는 코드를 짜기 어려웠다. 

 

그래서 블로그를 참조하여 문제를 해결해 보았다. 

 

import Foundation

let n = Int(readLine()!)!
var count = 0
for _ in 0..<n {
    let word = readLine()!
    var arr: [Character] = []
    var token = false
    for i in word {
        if !arr.contains(i) {
            arr.append(i)
        } else {
            if arr.last != i {
                token = true
            }
        }
    }
    if !token {
        count += 1
    }
}
print("\(count)")

 

빈 문자배열의 만들어준다. token는 boolean 변수로 초기값으로 false를 지정해 준다. 

 

현재 문자 'i'가 arr 배열에 포함되어 있지 않으면 'i'를 배열에 추가한다. 만약 'i'가 arr 배열에 존재할 때에는 arr 배열의 마지막 요소가 'i'와 다르면 token은 true이다. count는 token이 false일 때만 증가한다. 

 

 

 

참고 블로그 : https://sapjilkingios.tistory.com/entry/Swift-%EB%B0%B1%EC%A4%80-1316%EB%B2%88

 

Swift) 백준 1316번

요구능력 : Character 배열의 활용 코드설명 : arr 배열에 받은 문자를 하나씩 넣어주면서 기존에 나왔던건지 아닌지를 판별하고 연속된것을 처리해주었다. 그리고 Bool을 활용하여 그룹단어이면 coun

sapjilkingios.tistory.com

 

 

'Algorithm' 카테고리의 다른 글

[Algorithm] Swift 백준 1157번  (3) 2024.01.09
[Algorithm] Swift 백준 14467번  (3) 2023.11.18
[Algorithm] Swift 백준 20546번  (2) 2023.11.16
[Algorithm] Swift 백준 1292번  (1) 2023.11.09
[Algorithm] Swift 백준 3040번  (1) 2023.11.07