문제 설명
과정
첫 시도에서는 테스트3 에서 실패했다😥
class Solution {
public int solution(String t, String p) {
int answer = 0;
int pLen = p.length();
long pNum = Long.parseLong(p);
for (int i = 0; i < t.length() - pLen; i++) {
String num =t.substring(i, i + pLen);
long numValue = Long.parseLong(num);
if (numValue <= pNum) {
answer++;
}
}
return answer;
}
}
for문이 끝까지 돌지 않아서 마지막 "03"은 카운트가 되지 못한 채로 for문이 종료되었던 것이 문제였다.
for문에 바로 <= 해주었더니 테스트 통과
for (int i = 0; i < t.length() - pLen; i++) {} // 수정 전
for (int i = 0; i <= t.length() - pLen; i++) {} // 수정 후
- 참고할 다른 풀이 방법들
더보기
for문 안에서 하나의 변수로 해결 가능
class Solution {
public int solution(String t, String p) {
int pLength = p.length();
long pValue = Long.parseLong(p);
int answer = 0;
for (int i = 0; i <= t.length() - pLength; i++) {
long tValue = Long.parseLong(t.substring(i, i + pLength));
if (tValue <= pValue)
answer++;
}
return answer;
}
}
아예 if 문에서 끝내버림
class Solution
{
public int solution(String t, String p)
{
int answer = 0;
for(int i=0; i<=t.length()-p.length(); i++)
if(Long.parseLong(t.substring(i, i+p.length())) <= Long.parseLong(p))
answer++;
return answer;
}
}
class Solution {
public int solution(String t, String p) {
int answer = 0;
long ip = Long.parseLong(p);
for(int i=0;i<=t.length()-p.length();i++){
if(Long.parseLong(t.substring(i,i+p.length()))<=ip){
answer++;
}
}
return answer;
}
}
최종 코드
class Solution {
public int solution(String t, String p) {
int answer = 0;
int pLen = p.length();
long pNum = Long.parseLong(p);
for (int i = 0; i <= t.length() - pLen; i++) {
String num =t.substring(i, i + pLen);
long numValue = Long.parseLong(num);
if (numValue <= pNum) {
answer++;
}
}
return answer;
}
}
문제 링크
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'개발 공부 > 코딩테스트' 카테고리의 다른 글
99클럽 코테 스터디 8일차 TIL - 해시 (0) | 2024.11.05 |
---|---|
99클럽 코테 스터디 5일차 TIL - 해시 (0) | 2024.11.01 |
99클럽 코테 스터디 4일차 TIL - 문자열/해시 (0) | 2024.10.31 |
99클럽 코테 스터디 3일차 TIL - 문자열 (0) | 2024.10.31 |
99클럽 코테 스터디 1일차 TIL - 문자열 (0) | 2024.10.29 |