코딩 테스트 in JS
프로그래머스 JS 코테 1단계 - 푸드 파이트 대회
바닷가쟤
2023. 10. 16. 22:25
https://school.programmers.co.kr/learn/courses/30/lessons/134240
진짜 존잼 !!!!
아 오랜만에 코테 풀어보니까 넘무 재밌다
이제 슬슬 .. 1단계 벗어나서 2단계도 풀어야지. 하고서 정답률 낮은 1단계 문제 아무거나 눌러봤다가 10분 읽고 내가 할 수 없겠다 싶어서 적당히.. 낮은 문제를 골랐다..!!
문제 풀기 전에 어떻게 풀지 구상해두고 푸는 편인데, 역시 아날로그.. 손으로 써서 보는게 제일 편하다.
문제는 구상한대로 잘 풀렸다.
function solution(food) {
const divide = food.map(item => Math.floor(item/2));
let answer = ""
for(let i = 0; i < food.length; i++) {
let n = 0;
while(n < divide[i]) {
n++;
answer += i; // 여기선 문자열로 출력을 하려 함..
}
}
return answer
}
오우 !!! 여기까지 성공..
이게 이걸 뒤집은거를 만들어서 중간에 0을 끼워 넣을 것이다..! ㅎ
문자열을 배열로 바꿔주게 되었는데 이유는…
- 얕은 복사로 reverse하기 좋게
- 나중에 전개 연산자로 합치고 join하기 쉽게..!
function solution(food) {
const divide = food.map(item => Math.floor(item/2));
let left = []
for(let i = 0; i < food.length; i++) {
let n = 0;
while(n < divide[i]) {
n++;
left.push(i);
}
}
const right = left.reverse();
return [...left, 0, ...right]
}
.reverse()를 사용하려고 배열로 만들었다.
전개연산자로 메서드 없이 쉽게 붙였다. 이제 저 배열을 문자열로 합치기만 하면 된다.
function solution(food) {
const divide = food.map(item => Math.floor(item/2));
let left = []
for(let i = 0; i < food.length; i++) {
let n = 0;
while(n < divide[i]) {
n++;
left.push(i);
}
}
const right = [...left].reverse(); // 얕은 복사 해야지 left값 유지
const answer = [...left, 0, ...right];
return answer.join("");
}
성공 !
오… 되게 좋은 문제였다!
728x90