https://school.programmers.co.kr/learn/courses/30/lessons/120907
문제
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해 주세요.
제한사항
연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
1 ≤ quiz의 길이 ≤ 10
X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
-10,000 ≤ X, Y ≤ 10,000
-20,000 ≤ Z ≤ 20,000
[연산자]는 + 와 - 중 하나입니다.
풀이
import java.util.StringTokenizer
class Solution {
fun solution(quiz: Array<String>): Array<String> {
val answer: Array<String> = Array(quiz.size) { "" }
quiz.forEachIndexed { index, s ->
val st = StringTokenizer(s)
var sum = st.nextToken().toInt()
if (st.nextToken().equals("-")) {
sum -= st.nextToken().toInt()
} else {
sum += st.nextToken().toInt()
}
st.nextToken()
if (sum == st.nextToken().toInt()) {
answer[index] = "O"
} else {
answer[index] = "X"
}
}
return answer
}
}
- 해당문제는 매개변수로 주어지는 quiz의 수식이 맞는 수식인지 확인하라는 문제입니다. 해당문제를 regex를 이용하여 풀수도 있겠지만 그럴 경우 문자열이 맞는지 계속 확인을 해야 하므로 그렇게 좋은 선택지가 아닐 것입니다. 그래서 이번에는 StringTokenizer를 이용하여 해당 문자열을 풀어주는 작업을 한 뒤 조건문을 통하여 수식의 값에 따라 O 나 X를 넣어주는 코드입니다. 해당문제는 제한사항을 잘봐야 좀 더 최적화된 코드를 짤 수 있다는 것을 알려주는 좋은 문제였습니다.
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 평행 (Kotlin) (0) | 2023.08.01 |
---|---|
[프로그래머스] - 안전지대(Kotlin) (0) | 2023.08.01 |
[프로그래머스] - 겹치는 선분의 길이(Kotlin) (0) | 2023.07.31 |
[프로그래머스] - 캐릭터의 좌표(Kotlin) (0) | 2023.07.31 |
[프로그래머스] - 영어가 싫어요 (Kotlin) (0) | 2023.07.29 |