반응형
https://school.programmers.co.kr/learn/courses/30/lessons/147355
보통 여기서 바로 아래의 코드에 Integer.parseInt()를 쓰는 사람들이 많다. 나도 그렇게 했는데 테스트 코드 3개로 실행시켜 봤을 때는 아무 문제 없다가 제출하려고 하면 갑자기 런타임 에러가 뜨는 테스트 케이스들이 너무 많아진다. 그래서 찾아보니 Integer.parseInt()를 Long.ParseLong()으로 바꾸니까 해결이 됐다!
여기서 문제를 푸는 포인트는
1. Long과 Integer의 차이점
2. substring(), parseLong()이라는 메소드의 사용 방법
종류
|
설명
|
저장 공간
|
값의 범위(최소값~최대값)
|
int
|
부호 있는 정수
|
32 bits
|
-2,147,483,648 ~ 2,147,483,647
|
long
|
부호 있는 정수
|
64 bits
|
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
|
class Solution {
public int solution(String t, String p) {
int answer = 0;
for (int i = 0; i <= t.length() - p.length(); i++) {
String substring = t.substring(i, i + p.length());
if (Long.parseLong(substring) <= Long.parseLong(p)) {
answer++;
}
}
return answer;
}
}
여기서 완성형으로 코드를 작성하면 다음과 같이 작성할 수 있다.
class Solution {
public static int solution(String t, String p) {
int answer = 0;
for (int i = 0; i <= t.length() - p.length(); i++) {
String substring = t.substring(i, i + p.length());
if (Integer.parseInt(substring) <= Integer.parseInt(p)) {
answer++;
}
}
return answer;
}
public static void main(String[] args) {
System.out.println(solution("3141592", "271")); // 예상 결과: 2
System.out.println(solution("500220839878", "7")); // 예상 결과: 8
System.out.println(solution("10203", "15")); // 예상 결과: 3
}
}
테스트 케이스는 얼마든지 본인이 만들어서 추가할 수 있다. 나는 프로그래머스 문제에서 준 3개의 테스트 케이스만 가지고 실행해 봤는데 추가적으로 더 할 사람은 더 추가해서 실행해 보면 좋을 것 같다.
반응형
'Portpolio > codingtest' 카테고리의 다른 글
프로그래머스 lv0. 몫 구하기 java (0) | 2023.12.18 |
---|---|
프로그래머스 lv0. 숫자 비교하기 java (0) | 2023.12.18 |
프로그래머스 lv.0 문자열 섞기 java (1) | 2023.11.29 |
프로그래머스 lv0 길이에 따른 연산 java (0) | 2023.11.19 |
프로그래머스 lv.0 rny_string java (1) | 2023.11.17 |
댓글