프로그래머스 숫자 찾기 0단계 문제 입니당
https://school.programmers.co.kr/learn/courses/30/lessons/120904
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
● 문제설명
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
<<제안사항>>
1) 0 < num < 1,000,000
2) 0<= k < 10
3) num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
● 내가 직접 짜본 코드
class Solution {
public int solution(int num, int k) {
int answer = 0, dividied_val=0, cnt=0;
//1
for(int i=1; i<=1000000; i*=10){
if(i>num){
dividied_val=i/10;
break;
}
}
//2
for(int i=dividied_val; i>=1; i/=10){
cnt++;
if(k==(num/i%10)){
answer=cnt;
break;
}
}
if(answer==0) answer=-1;
return answer;
}
}
● 코드 해설
1. num의 자릿수를 구역1에서 구합니다 (12341 -> 10000)
2. dividied_val부터 i까지 10씩 감소시키면서
3. num/i%10이 k와 같으면
4. cnt를 answer에 넣어줍니다.
5. 반복문 다 빠져 나왔는데도 answer가 0 이면 -1을 넣어줍니다
● 다른 사람의 코드
class Solution {
public int solution(int num, int k) {
int answer = 0;
int count = 1;
while(num / 10 > 0) {
if(num % 10 == k) {
answer = count;
}
num /= 10;
++count;
}
if(num % 10 == k) {
answer = count;
}
System.out.println(answer);
System.out.println(count);
return answer > 0 ? count-answer+1 : -1;
}
}
제어문과 반복문으로만 작성한 사람이 한 분 더 계셨네요
오호 이렇게 풀 수 있군요!
삼항연산자를 사용하니 더욱 깔끔하네요
제가 아직 1학년이라 클래스 생성자까지밖에 못 배운 상태입니다 ㅠㅠ
그래서 코드를 짤 수 있는 범위가 재한적이지만 아는 한에서는 최선을 다해! 문제를 풀어볼게요 💖💖
'CodingTest' 카테고리의 다른 글
프로그레머스 - 약수 구하기 (JAVA) (0) | 2023.01.05 |
---|---|
프로그래머스 - 머쓱이보다 키 큰 사람 (JAVA) (0) | 2023.01.05 |
프로그래머스 - 최댓값 만들기 (JAVA) (0) | 2023.01.03 |
프로그래머스 - 7의 개수(JAVA) (0) | 2023.01.03 |
프로그래머스 - 다음에 올 숫자 (JAVA) (0) | 2022.12.29 |