https://school.programmers.co.kr/learn/courses/30/lessons/147355
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
t를 p의 길이만큼 잘게 나누어야하기에 substring으로 나누어야 겠다고 생각하였고
전날에 풀었던 문제와 같이 pareInt가 생각 나게 되는 문제였다.
따라서 처음으로 작성하였던 코드는
첫번째 코드
public int solution(String t, String p) {
int pInt = Integer.parseInt(p);
int answer = 0;
for(int i =0;i<=t.length() - p.length();i++){
int k = Integer.parseInt(t.substring(i, i + p.length()));
if((k <= pInt)){
answer++;
}
}
return answer;
}
와 같았다 하지만
와 같이 나오게 되었다
p를 int화 하는 과정도 for문에서 돌릴려다가 런타임 오류를 걱정하여 밖으로 뺏는데 런타임 오류가 떠 당황하였다.;
이에 문제를 다시 함참 들여다 보게 되었는데
가 들어왔다.
t의 길이가 10000 이라고 하는데 나는 길이를 읽고도 숫자의 범위가 int범위 안인데?(5자리 밖에 안된다고 생각;;)
라고 생각하며 왜 안되는거지 하고 있다가 깨닫고 수정하였다.
따라서 완성된 코드는
public static int solution(String t, String p) {
long pLong = Long.parseLong(p);
int answer = 0;
//10203 15
//5 - 2 = 3
for(int i =0;i <= t.length() - p.length();i++){
long k = Long.parseLong(t.substring(i, i + p.length()));
System.out.println(k);
if((k <= pLong)){
answer++;
}
}
return answer;
}
오류를 해결하면서 int형과 long형의 범위를 공부하게 되었다.
int | 4바이트 | -2,147,483,648 ~ 2,147,483,647 |
long | 8바이트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
자료형의 범위를 기억하자!
반응형
'프로그래머스' 카테고리의 다른 글
99클럽 코테 스터디 6일차 TIL 기사단원의 무기(약수 구하기) (0) | 2024.04.03 |
---|---|
99클럽 코테 스터디 5일차 TIL 피보나치수열 (0) | 2024.04.02 |
99클럽 코테 스터디 4일차 TIL 햄버거 만들기 문제(ArrayList remove vs Stack pop) (0) | 2024.04.01 |
99클럽 코테 스터디 2일차 TIL 숫자 문자열과 영단어 (1) | 2024.03.30 |
99클럽 코테 스터디 1일차 TIL + 프로그래머스 체육복(자바) (0) | 2024.03.30 |