-
[Swift] 프로그래머스 - 조건 문자열 / LV.0, 181934 (런타임 에러)기초라고 생각되는 것/문제풀이 2023. 9. 20. 00:51반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181934
이 문제에 꽤나 삽질을 했어요 ㅜㅜ
왜냐하면 테스트 14번에서 실패 (런타임 에러) 가 나왔어요 ! (지금 생각하면 조금 억울 ..)
코드를 보면서 반례를 찾으려고 했지만, 도통 찾기 어려웠고 에러의 이유를 알 수 없었기에 문제 진행이 너무 어려웠어요.결국 글럽하우스로 알게 된 만도스님에게 헬프를 요청했어요.
결론적으로, 간혹 프로그래머스 서버의 문제가 아닌지 의심갈 때가 있다고했어요.
같은 코드인데도 시간초과가 난다던지, 런타임 에러가 종종 발생한다는 경험을 공유해주셨어요
같은 코드로 제출하는게 안되기 때문에 스페이스바 or 엔터키로 코드에 변화를 주어 제출했어요 !통과 ~
import Foundation func solution(_ ineq:String, _ eq:String, _ n:Int, _ m:Int) -> Int { if eq == "=" { if ineq == ">" { return n >= m ? 1 : 0 } else { return n <= m ? 1 : 0 } } else { if ineq == ">" { return n > m ? 1 : 0 } else { return n < m ? 1 : 0 } } }
만도스님도 코드를 보내주셨는데 그 부분에서 아이디어를 얻어서 한번 더 수정했어요 !!
현재 위에 코드에서 반복되는 부분은 삼항연산자였고, condtition에 따른 return이 1 or 0으로 일정해서 수정 가능할 것 같았습니다.import Foundation func solution(_ ineq:String, _ eq:String, _ n:Int, _ m:Int) -> Int { return predicate(ineq, eq, n, m) ? 1: 0 } func predicate(_ ineq:String, _ eq:String, _ n:Int, _ m:Int) -> Bool { if eq == "=" { if ineq == ">" { return n >= m } else { return n <= m } } else { if ineq == ">" { return n > m } else { return n < m } } }
Thanks to @만도스
'기초라고 생각되는 것 > 문제풀이' 카테고리의 다른 글
[Swift] 프로그래머스 - 수열과 구간 쿼리 3 / LV.0, 181924 (0) 2023.11.01 [Swift] 프로그래머스 - 원소들의 곱과 합 / LV.0, 181929 (1) 2023.10.30 [Swift] 프로그래머스 - 더 크게 합치기 / LV.0, 181939 (0) 2023.09.16 [Swift] 프로그래머스 - 문자열 겹쳐쓰기 / LV.0, 181943 (0) 2023.09.13 [Swift] 프로그래머스 - 대소문자 바꿔서 출력하기 / LV.0, 181949 (0) 2023.09.11