heyday2024 님의 블로그
[알고리즘 특강 1] 본문
알고리즘? 컴퓨터가 문제를 해결할 수 있도록 절차나 방법을 자세히 설명하는 과정
컴퓨터는 작업 성능은 우수하지만 정확한 명령이 없으면 일을 효율적으로 하기 힘들어요
📚 개발자는 컴퓨터가 효율적으로 동작하도록 명령을 내려야 하고 이 때 필요한 것이 알고리즘입니다.
코딩테스트는 코드로 이루어지는 모든 형태의 테스트입니다.
통상적으로 알고리즘 실력을 평가하는 테스트를 지칭
- 온라인 - 프로그래머스 등 기업용 서비스를 제공하는 곳에서 진행
- 보통 3문제를 2시간 이내에 풀고 제출하는 조건이 가장 대표적입니다
- 문제수는 1 ~ 5문제, 시간은 90분에서 4시간까지 다양해요
- 라이브 - 온라인 또는 오프라인 면접 시간에 면접관 앞에서 진행
- 보통 낮은 난이도의 알고리즘 문제를 풀이
- 이 경우에는 ‘라이브 코딩테스트’라고 별도의 이름으로 부르고 있어요
truthy & falsy 값이란?
- falsy
- false
- null
- undefined
- 0
- NaN
- ‘’
- truthy
- 언급한 6가지 falsy 값 외에 모든 값
// 아래의 값은 모두 truthy한 값입니다.
'false', 'null', 'undefined', '0', 'NaN', ' ', [], {}, -1 // 암살자들
- 나는 방법 2처럼 풀다가, 이거 언제 이렇게 다 작성하지... 하다가 방법 3으로 틀어서 풀었다.
- 근데 방법 4를 보고 머리를 댕~~ 맞은 느낌... includes 분명 이거 아는 메소드인데, 생각이 전혀 안났다...
- 확실히 나는 4번 방식이 간결하고 좋다고 생각한다.
- 다른 방법을 생각해봤는데 차라리 조금 직관적으로 가위바위보 룰을 이중 객체에 담아서 그 룰을 a, b 값을 받는 순간 결과를 도출해내는 방법도 좋다고 생각한다.
function rockPaperScissors(a, b) {
let cases = {
가위: { 가위: "무승부", 바위: "b 승리", 보: "a 승리" },
바위: { 가위: "a 승리", 바위: "무승부", 보: "b 승리" },
보: { 가위: "b 승리", 바위: "a 승리", 보: "무승부" },
};
return cases[a][b];
}
'프론트엔드 부트캠프' 카테고리의 다른 글
[알고리즘 특강] padStart, 시간 복잡도, 공간 복잡도 간단하게 정리! (0) | 2024.10.14 |
---|---|
[알고리즘 특강2] 내가 작성한 코드와 비교해보자. (1) | 2024.10.11 |
[2주차 JS 문법] ES6 문법, 일급 객체, Map, Set (0) | 2024.10.10 |
[JS문법 1주차] 자바 기초 문법 정리 2 - 조건문, 객체, 배열, 반복문, break, continue (3) | 2024.10.10 |
[JS 문법 1주차] 자바 기초 문법 (4) | 2024.10.08 |