1. BOJ-9012, 괄호
1.1. 문제 📑
1.1.1. 문제 정리 ▾
1.2. 접근 🚶🏻
1.2.1. 나의 생각 ▾
1.2.2. 나의 해결 ▾
1.2.3. 코드 리뷰 ▾
1.3. Additional 📂
1. BOJ-9012, 괄호
1.1. 문제 📑
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
1.1.1. 문제 정리 ▾

- 문장의 개수를 입력받는다.
- 문장들은 괄호로 구성되어있고, 괄호가 완전한 한쌍이 되는지 체크하여 한쌍으로 잘 닫힌다면 "YES", 제대로 닫히지 않으면 "NO"를출력한다.
1.2. 접근 🚶🏻
1.2.1. 나의 생각 ▾
- 괄호 "("와 ")"를 각각 카운트하는데 "("일 경우 더해주고, ")"일 경우 빼주면 된다고 생각했다.
- 결과 값이 "0"일 경우 "YES"를 출력시켜주고, 빼는 과정에서 열린 괄호가 없다면(count < 0)이면 break를 통해 루프를 끊어주면 된다고 생각했다.
1.2.2. 나의 해결 ▾
func solution() {
let cnt = Int(readLine()!)!
for _ in 0..<cnt {
let str = readLine()!
var checkCount = 0
for char in str {
if char == "(" {
checkCount += 1
} else {
checkCount -= 1
if checkCount < 0 {
break
}
}
}
print(checkCount == 0 ? "YES" : "NO")
}
}
solution()
swift
- 코드에 관한 내용은 밑에서 살펴보자 😀
1.2.3. 코드 리뷰 ▾
for _ in 0..<cnt {
let str = readLine()!
var checkCount = 0
for char in str {
if char == "(" {
checkCount += 1
} else {
checkCount -= 1
if checkCount < 0 {
break
}
}
}
print(checkCount == 0 ? "YES" : "NO")
}
swift
- str변수에 입력을 받고, for문을 통해 하나씩 if문을 거쳐 +,-를 진행했다.
- 특히 신경을 썼던 부분이 else문 안에 있는 if문이었다.
- 저 if문을 통해 불완전한 괄호 일 경우, 더 체크 없이 바로 루프를 끊어주었다.
1.3. Additional 📂
- 처음에 forEach문으로 진행을 하였으나 break의 에러 문을 접했다. ▾
Unlabeled 'break' is only allowed inside a loop or switch, a labeled break is required to exit an if or do
레이블이 지정되지 않은 '중단'은 루프 또는 스위치 내부에서만 허용되며, if 또는 do를 종료하려면 레이블이 지정된 중단이 필요합니다.
- 이를 통해 break문을 사용하기 위해 forEach를 for문으로 바꿔서 진행했는데, forEach는 제한을 거는 목적에서는 사용하면 안 되겠다는 생각을 했다.
- 설 연휴에 알고리즘 공부.. 아주 유익한 시간이다 😆
'Algorithm.zip' 카테고리의 다른 글
[Swift]BOJ-10845 (0) | 2022.02.02 |
---|---|
[Swift]BOJ-1406 (0) | 2022.02.01 |
[Swift]BOJ-9093 (0) | 2022.01.31 |
[Swift]BOJ-10828 (0) | 2022.01.30 |
[Swift]BOJ-10815 (0) | 2022.01.29 |