프로그래머스 JS 코테 | 콜라츠 추측, 하샤드 수
lv.1에서 이름이 특이해서 눈여겨 봤던 문제들을 풀어봤다.
무튼... 전에 문제를 슬쩍 봤을 때 어려워 보였었는데 오늘 문제를 봤을 때 초큼 만만s 해 보여서 풀어봤다.
ㅎ 내 힘으로 풀었다고 한다. 재밌었다.
그냥 단순한 계산 문제가 아니고 스토리가 있으니까 더 재밌는 느낌?
마치 like 수학 익힘책에서 달력을 자꾸 찢는 그런 늒김인거지..
Lv. 1 콜라츠 추측
https://school.programmers.co.kr/learn/courses/30/lessons/12943
첫 번째 시도
function solution(num) {
let s = num
let answer = 0
while(s === 1) {
if(s % 2 === 0) {
s = s / 2
answer++
} else {
s = s * 3 + 1
answer++
}
}
return answer
}
웨.. 웨 안대지..??
수정
function solution(num) {
let s = num
let answer = 0
while(true) {
if(s % 2 === 0) {
s = s / 2
answer++
} else {
s = s * 3 + 1
answer++
}
if(s === 1) break
}
return answer
}
while문을 true로 바꿔서 무한 루프를 만들어 줬고, s가 1이 되면 break로 끝내게 했다.
여기서 추가 해야 할 것은 500번 이상이 되면 -1을 반환하게 하기 !
if(500 <= answer) {
answer = -1
break
}
이걸… 추가해줬다.. 두근두근
ㅋㅋㅋㅋㅋㅋ 뭔데… 뭐냐고……
으아악악ㅇ악 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
프로그래머스는 … 실행결과 테스트 케이스에 뭘 넣었는지 공개하시오…. 젭알요
뭘가지고 테스트 하셨는데요….
어라?
성공
function solution(num) {
let s = num
let answer = 0
while(s != 1) {
if(s % 2 === 0) {
s = s / 2
answer++
} else {
s = s * 3 + 1
answer++
}
}
return (answer >= 500) ? answer = -1 : answer
}
뭬야 통과함..!
while문 조건으로 s!= 1 추가함
Lv.1 하샤드 수
https://school.programmers.co.kr/learn/courses/30/lessons/12947
(x + "")[n] 이걸 하면 x의 n번째(제로베이스드 넘버링) 숫자를 문자로 얻을 수 있다.
변수 index에 (x + "")[n] 을 n = 0에서부터 x.length까지 다 더한 값을 할당하고,
x % index === 0 이면 true 아니면 false ..! 하면 되려나?
function solution(x) {
let index = 0
for(let i = 0;i < (x + "").length; i++) {
index += (x + "")[i] * 1
}
return index
}
각 자리의 숫자를 더한 값 index 추출 완.
function solution(x) {
let index = 0
for(let i = 0;i < (x + "").length; i++) {
index += (x + "")[i] * 1
}
if(x % index === 0) {
return true
} else {
return false
}
}
바로 그냥 통과
(호우)
(x % index === 0) ? true : false
이렇게 하면 undefiend 나와서 고민했는데 조건 앞에 return 붙여줘야 함!
return (x % index === 0) ? true : false
통과쓰