Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

heyday2024 님의 블로그

[알고리즘 특강 1] 본문

프론트엔드 부트캠프

[알고리즘 특강 1]

heyday2024 2024. 10. 10. 21:18

알고리즘?  컴퓨터가 문제를 해결할 수 있도록 절차나 방법을 자세히 설명하는 과정

 

컴퓨터는 작업 성능은 우수하지만 정확한 명령이 없으면 일을 효율적으로 하기 힘들어요

📚 개발자는 컴퓨터가 효율적으로 동작하도록 명령을 내려야 하고 이 때 필요한 것이 알고리즘입니다.

 

코딩테스트는 코드로 이루어지는 모든 형태의 테스트입니다.

통상적으로 알고리즘 실력을 평가하는 테스트를 지칭

 

  • 온라인 - 프로그래머스 등 기업용 서비스를 제공하는 곳에서 진행
    • 보통 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];
}