개발 공부/코딩테스트

99클럽 코테 스터디 2일차 TIL - 문자열

죽밥죽밥화이팅 2024. 10. 30. 01:44

문제 설명

 

과정

첫 시도에서는 테스트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