[프로그래머스] Java 코딩테스트 - 숫자 찾기

yihyun·2025년 7월 14일

코딩테스트

목록 보기
100/105
post-thumbnail

숫자 찾기

✅ 문제설명

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

✅ 제한사항

0 < num < 1,000,000
0 ≤ k < 10
num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

🔽 소스코드 1

시간 0.02ms ~ 0.03ms

  • str1.indexOf(str2) : str1에 str2가 등장하는 첫 번째 인덱스를 반환한다.
    ※ 없을 경우 -1을 반환

  • 정수를 문자열로 변환 (String.valueOf())한 후 indexOf()를 사용해 k가 존재하는 위치를 result에 저장해준다.

  • 이후 만약 저장한 값이 -1일 경우 -1을 return 하고 아닐 경우 result에 1을 더해 return 준다.
    → 1을 더해주는 이유 : indexOf() 는 위치를 0부터 시작하지만 문제의 조건은 첫 번째 위치의 값이 1부터 시작하기 때문

	public int solution(int num, int k) {
		
		int result = String.valueOf(num).indexOf(String.valueOf(k));
		
		return result == -1? -1 : result+1;
	}

🔽 소스코드 2

  • 위에 방식에서 시작 인덱스를 0이 아닌 1로 하기 위해 삼항연산자를 이용해 값에 +1 을 해주었다면

  • 이 코드에서는 "=" 을 이용해 0번 인덱스에 무의미한 문자열을 넣어 우리가 찾는 값을 1부터 찾을 수 있도록 진행하였다.

  • 직접 작성한 코드는 아니지만 생각의 전환을 할 수 있는 코드라 생각해 참고용으로 작성해보았다.

	public int solution1(int num, int k) {
		return ("-" + num).indexOf(String.valueOf(k));
	}
profile
개발자가 되어보자

0개의 댓글