https://softeer.ai/practice/9498
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
문자열
짝이 잘 맞는 괄호로만 구성된 문자열을 입력받아서 1과 +를 사이에 껴넣은 올바른 수식을 반환하는 문제
접근방법
가능한 수식이면 아무거나 된다고 해서 조건을 아래와 같이 설정했다
- 직전 문자가 "(" 일때, 다음 문자가 "("면 현재 문자열에 바로 추가, 반대로 다음 문자가 ")"면 "1)"을 현재 문자열에 추가
(이러면 결론적으로 (( 혹은 (1) 이 된다)
- 직전 문자가 ")"일때, 다음 문자가 "("면 현재 문자열에 "+("를 추가, 반대로 다음 문자가 ")"면 ")"만 현재 문자열에 추가
(이러면 "))"혹은 ")+" 이런 모양이 된다)
모든 예외 케이스를 고려했는지 확신은 부족한데 생각나는 케이스들에는 다 잘 돌아가는 것 같았다. 제출했더니 통과됨
오답노트
Swif로 문자열 자르고 인덱싱하는게 여전히 어렵고 익숙하지 않아서 좀 여러번 찾아보고 고쳤다.
인덱싱은 forEach문으로 해결했고, 문자열 자르는건 prefix, suffix 메서드써서 했다
소스코드
var input:String = readLine()!
var result:String = String(input.prefix(1))
var curr:String = String(input.prefix(1))
input = String(input.suffix(input.count-1))
input.forEach { s in
if curr == "(" {
if s == "(" {
result += "("
} else {
result += "1)"
}
} else {
if s == ")" {
result += ")"
} else {
result += "+("
}
}
curr = String(s)
}
print(result)
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[백준 1197] 최소 스패닝 트리 (Swift) (0) | 2025.02.06 |
---|---|
[Softeer] Pipelined (Swift) (1) | 2025.02.05 |
[Softeer] 개표 (Swift) (0) | 2025.02.04 |
[softeer] GPT식 숫자비교 (C++) (1) | 2025.02.04 |
[프로그래머스] 방의 개수 (Swift) (0) | 2025.02.03 |