Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 전역변수의문제점
- 이미지 갤러리 최적화
- 네트워크 연결과 구성요소
- 프로퍼티 어트리뷰트
- 스코프
- Set과 Map
- ES6함수 추가기능
- 기술컨퍼런스
- 브라우저의 렌더링 과정
- const
- 인터넷 장비
- 이벤트
- 제너레이터와 async/await
- 프로그래머스
- 타입변환과단축평가
- var 사용금지
- 블로그 서비스 최적화
- 빌트인 객체
- 모던 자바스크립트 Deep Dive
- Property Attribute
- 원시값과객체의비교
- DOM
- 프론트엔드 성능 최적화 가이드
- 자바스크립트
- 딥다이브
- 자바스크립트 딥다이브
- 올림픽 통계 서비스 최적화
- 비전공이지만 개발자로 먹고삽니다
- 디스트럭처링
- Babel과 Webpack
Archives
- Today
- Total
JDevBlog
Day5_코딩 기초 트레이닝_프로그래머스 본문
코드 처리하기
description: https://school.programmers.co.kr/learn/courses/30/lessons/181932
My answer was
function solution(code) {
let answer = '';
let mode = 0;
for(let idx = 0; idx < code.length; idx++) {
const firstCondition = !mode && (idx % 2 === 0)
const secondCondition = mode && (idx % 2 === 1)
if(code[idx] !== '1' && (firstCondition || secondCondition)) answer += code[idx];
mode = code[idx] === '1' ? mode ? 0 : 1 : mode
}
return answer || "EMPTY";
}
Best answer was
function solution(code) {
let answer = '';
let mode = 0;
for (let i = 0; i < code.length; i += 1) {
if (Number(code[i]) === 1) {
mode = mode === 1 ? 0 : 1;
}
if (Number(code[i]) !== 1 && i % 2 === mode) {
answer += code[i];
}
}
return answer.length > 0 ? answer : 'EMPTY';
}
주사위 게임
My answer was
// Solution1
function solution(a, b, c) {
const allDifferent = a !== b && b !== c && a !== c;
const oneDifferent = (a === b && b !== c) || (b === c && a !== b) || (a === c && a !== b);
const allIdentical = a === b && b === c;
const total = a + b + c;
const multipleTotal = Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2);
const tripleTotal = Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3);
return allDifferent ? total : oneDifferent ? total * multipleTotal : total * multipleTotal * tripleTotal;
}
// Solution2
function solution(a, b, c) {
const sum1 = a + b + c;
const sum2 = a * a + b * b + c * c
const sum3 = a ** 3 + b ** 3 + c ** 3
if(a === b && b === c) return sum1 * sum2 * sum3;
else if((a === b)||(b === c)||(a === c)) return sum1 * sum2;
else return sum1;
Best answer was
const solution = (a, b, c) => {
const set = new Set([a, b, c]);
switch ([...set].length) {
case 1: return calculate([a, b, c], 3);
case 2: return calculate([a, b, c], 2);
case 3: return calculate([a, b, c]);
}
};
const calculate = (inc, n=1) => {
const [a, b, c] = inc;
let result = 1;
for (let i = 1; i <= n; i++) {
result *= Math.pow(a, i) + Math.pow(b, i) + Math.pow(c, i)
}
return result;
};
const set = new Set([a, b, c]) 을 사용하여 중복된 인자의 개수를 파악한 점이 좋다.
calculate 대신, sum1, sum2, sum3 를 그냥 리턴하는 것이 좋겠다.
원소들의 곱과 합
My answer was
function solution(num_list) {
const multiplied = num_list.reduce((acc, cur) => acc * cur, 1);
const squaredSummed = num_list.reduce((acc, cur) => acc + cur, 0) ** 2
return +(multiplied < squaredSummed)
}
Best answer was
function solution(num_list) {
let accMul = 1
let accSum = 0
for (const num of num_list) {
accMul *= num
accSum += num
}
return accMul < accSum ** 2 ? 1 : 0
}
for 구문을 한번만 돌려서 시간 복잡도를 낮춘 것이 훌륭하다.
이어 붙인 수
My answer was
function solution(num_list) {
let odd = ''
let even = ''
for(const n of num_list) {
if(n % 2 === 0) even += n
else odd += n
}
return Number(odd) + Number(even)
}
Best answer was
새롭다.
'Software Engineering > Algorithm Test' 카테고리의 다른 글
Day4_코딩 기초 트레이닝_프로그래머스 (0) | 2023.07.15 |
---|---|
Day3_코딩 기초 트레이닝_프로그래머스 (0) | 2023.07.15 |
Comments