프로그래머스 코딩테스트 연습 입문단계 'k의 개수' 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120887
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❓문제 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
아래 입출력 예시를 참고하세요!
⚠️ 제한사항 및 입출력 예시
- 1 ≤ i < j ≤ 100,000
- 0 ≤ k ≤ 9
입출력 예시 ▼
입력 ( i, j , k )
10 50 5 // i , j , k
출력 (return값)
5
// 10부터 50까지 5는 15, 25, 35, 45, 50 총 5번 등장합니다. 따라서 5를 return 합니다.
✏️ 직접 구현한 코드
class Solution {
public int solution(int i, int j, int k) {
int cnt = 0;
int num;
for(int n = i; n <= j; n++) {
num = n;
if(num==k){
cnt++;
}
while(num / 10 >= 1) {
if(num%10==k){
cnt++;
}
if(num/10==k){
cnt++;
}
num /= 10;
}
}
return cnt;
}
}
🗣️ 코드 설명
- 먼저 i부터 j까지 반복하는 for문을 만들었고, 그 안에서 일의 자리는 if문을 이용해 바로 k값과 비교하게 했습니다.
- 또 for문안에 whlie문을 넣어 10의 자리수부터 비교했습니다. 이 while문은 10을 계속 나누다가 나머지가 1보다 작아지게 되면 멈춥니다. while문 안에서는 %,/ 연산자로 k와 비교했습니다.
🔥다른 사람의 코드
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
for (int num = i; num <= j; num++){
int tmp = num;
while (tmp != 0){
if (tmp % 10 == k)
answer++;
tmp /= 10;
}
}
return answer;
}
}
이 사람의 코드처럼 일의 자리 숫자도 %를 이용해 한번에 풀 수 있지만 그걸 잊고 나는 일의 자리를 따로 계산했다.. 그래서 내 코드가 더 어렵고 복잡해졌다. 아직 산술연산자에 대한 이해가 떨어지다는 것을 느꼈다.
%연산자 이해에 도움되는 블로그 ▼
https://dojang.io/mod/page/view.php?id=106
C 언어 코딩 도장: 15.1 나머지 연산하기
15 나머지 연산하기 C 언어에서는 사칙연산 이외에도 나머지 연산을 제공합니다. 그런데 나머지 연산을 왜 따로 제공하는 것일까요? 나머지 연산은 나눗셈과 깊은 관계가 있습니다. 보통 3.75 / 1.5
dojang.io
'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글
[JAVA] 학교 수행평가 코딩테스트 - 3년 간의 1, 2학기 성적 입력받고 전체 평균 점수 구하기 (0) | 2023.03.02 |
---|---|
[JAVA] 학교 수행평가 코딩테스트 - 정수 10개를 배열에 저장 후 가장 큰 수 출력 (0) | 2023.02.28 |
[JAVA] 학교 수행평가 코딩테스트 - 2차원 배열을 활용한 성적 처리 프로그램 (0) | 2023.02.27 |
[JAVA] 프로그래머스 - 합성수 찾기 (0) | 2023.02.27 |
[JAVA] 프로그래머스 - 직각삼각형 출력하기 (0) | 2023.02.24 |