728x90
점수 : 1120 (+1)int sum = String.valueOf(x).chars().map(ch -> ch - '0').sum(); return x % sum == 0;
테스트케이스 최대 소요시간 : 0.03ms, 79MB
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12947
제출답안
class Solution {
public boolean solution(int x) {
int harshad =0;
int copyX = x;
while(copyX > 0){
harshad += copyX%10;
copyX /= 10;
}
return (x%harshad==0)? true : false ;
}
}
int를 각 자리수별로 분해해서 재사용하는게 코테 1단계에서 정말 많이 쓰이는 것 같다.
괜찮은 방식을 하나 찾아서 두고두고 쓰자고 생각하고 검색해보니까 아래 블로그 글이 나왔고 제일 깔끔해서 좋았다.
두고 두고 써먹어야지. 나머지연산자를 잘 활용한 예라고 생각한다.
그런데 와중에 이걸 두줄로 작성한 답안을 보니....앞으로도 갈길이 멀다는 생각이 들었다.
실무에서는 가독성때문에 이렇게 쓰진 않을 것 같지만, 알고 안쓰는 것과 모르는 건 다르니까.
int sum = String.valueOf(x).chars().map(ch -> ch - '0').sum();
return x % sum == 0;
1-1. `String.valueOf(x)` : int를 String으로 변환
1-2. `.chars()` : String을 한 글자씩의 char Stream 형태로 변환.
1-3. `map(...)` : 자바에도 맵이 있는지 처음알았다. 배열의 각 요소를 순회하며 리턴되는 값들을 모아 새로운 배열을 만든다. 이때 그냥 "0"을 int로 변환하면 48이므로 `- '0'`을 해준다.
1-4. `sum()` : 배열의 요소들을 전부 더함
2. 하긴 리턴 자체가 boolean인데 굳이 삼항연산자로 쓸 필요는 없지..
IntStream은 또 뭘까...
자바스크립트는 배우면 재밌는데 자바는 하루종일 형변환하고 타입마다 다른 메서드 찾아헤매고있으니 너무 재미없다.
#99클럽 #99일지 #코딩테스트 #개발자스터디 #항해 #TIL
728x90
'코테' 카테고리의 다른 글
[Java] 짝수와 홀수 (0) | 2024.04.06 |
---|---|
[Java] 이상한 문자 만들기 (0) | 2024.04.05 |
[Java,JS] 자연수 뒤집어 배열로 만들기_이게 어려울일인가 (0) | 2024.04.01 |
[JS] 크기가 작은 부분 문자열_ 자꾸 이렇게 쉬운 것만 풀어도 되는걸까 (1) | 2024.03.31 |
[MySQL] 잔챙이 잡은 (0) | 2024.03.24 |
댓글