Algorithms/프로그래머스

[프로그래머스] 'k의 개수' - Java

LEFT 2023. 5. 9. 18:13

<문제 제시>

<문제설명>
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, 
i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

<예시 입출력>


<문제 해결 과정>

입력받은 범위에서 타겟 Number를 조사하는 문제이다.

일반적인 정수형으로 처리하기보다 Integer.toString을 통해 String형으로 바꾸고, char 자료형으로

target에 해당하는 "문자"를 찾고자 하였다.

String r_s = "";
String target = Integer.toString(k);

char token;
char target_c;
token = r_s.charAt(m);
target_c = target.charAt(0);

입력받은 k값을 String target 변수에 Integer.toString(k)을 통해 저장하고,

i부터 j까지 for문을 반복시키면서

반복문의 반복자(r) 를 Integer.toString(r) 을 통해 r_s 변수에 저장해준 후 

그 값 인덱스 별로 charAt()을 통해 token으로 저장한다.

token과 target_c을 비교하여 answer에 횟수를 누적시킨다.


<전체코드>

public class number_k {
	
	public static int solution(int i, int j, int k) {
        int answer = 0;
        String r_s = "";
        String target = Integer.toString(k);
        
        char token;
        char target_c;
        
        for(int r = i; r <= j; r++) {
        	r_s = Integer.toString(r);
        	
        	for(int m = 0; m < r_s.length(); m++) {
        		token = r_s.charAt(m);
        		target_c = target.charAt(0);
        		
        		if(token == target_c) {
        			System.out.println("일치합니다. token = " + token + ", target_c = " + target_c);
        			answer += 1;
        		}
        	}
        }
        
        return answer;
    }
	
	public static void main(String[] args) {
		int i = 1;
		int j = 13;
		int k = 1;
		
		System.out.println(solution(i, j, k));
	}

}

실행과정을 보기 위해서 print문을 통해 중간점검을 해보기도하였다. 변수명이 헷갈릴 수 있어 좀 더 직관적인 자료형 표기법을 사용해야겠다고 생각했다.


문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120887

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr