2026.09.21
46.2/100.0
실패
실패 원인 분석
storey = 67 일 때,
if (storey / 10 == 0)
조건문에 걸려서 storey = 7 이 그대로 result에 더해지고 끝난다.
class Solution {
public int solution(int storey) {
int divisor = 10;
int result = 0;
while(true) {
if (storey / divisor == 0) {
result += storey;
break;
}
int remain = storey % divisor;
storey /= divisor;
if (remain > 5) {
result = result + (10 - remain);
storey++;
}
else {
result += remain;
}
}
return result;
}
}
76.9/100.0
실패
실패 원인 분석
storey = 555 일 때,
if (remain > 5)
조건문으로 인해 result = 14 가 나와야 하지만, result = 15 가 나오게 된다.
class Solution {
public int solution(int storey) {
int result = 0;
while(true) {
if (storey == 0) {
break;
}
int remain = storey % 10;
storey /= 10;
if (remain > 5) {
result = result + (10 - remain);
storey++;
}
else {
result += remain;
}
}
return result;
}
}
소요 시간: 1시간
시간 복잡도:
class Solution {
public int solution(int storey) {
int result = 0;
while(true) {
if (storey == 0) {
break;
}
int remain = storey % 10;
storey /= 10;
if (remain > 5 || (remain >= 5 && storey % 10 >= 5)) {
result = result + (10 - remain);
storey++;
} else {
result += remain;
}
}
return result;
}
}
시간 복잡도:
코드 분석
나의 코드와 동일
class Solution {
public int solution(int storey) {
int answer = 0;
while (storey > 0) {
int digit = storey % 10;
storey /= 10;
// 6 이상이면 올림, 5는 다음 자리가 5 이상일 때만 올림
if (digit > 5 || (digit == 5 && storey % 10 >= 5)) {
answer += 10 - digit;
storey++;
} else {
answer += digit;
}
}
return answer;
}
}
AI로 반례를 찾아가며 무엇이 문제인지 확인 후 해결했다.
현재 수가 5일 때, 앞자리 수 여부에 따라 분기가 갈리는 것을 스스로 해결했지만, 반례를 AI가 찾아줬다는 점에서 완벽하게 스스로 성공했다고 하기 힘들다.
따라서 실패를 주되, 반만 성공을 주고 싶다.
연속으로 실패를 해서 마음이 좀 착잡했는데, 간만에 성공아닌 성공을 해서
기분이 좀 나아지는 것 같다.
다음에는 반례도 직접 찾아서 해결을 해야겠다.