Development

[TIL] 컴퓨터 구조와 프로그래밍, git, 코딩테스트, OBS

개발자 강정 2022. 1. 18. 20:46

컴퓨터 구조와 프로그래밍 독서

2장 전자 회로의 조합 논리

디지털 컴퓨터의 사례

https://traveling-wallaby-56e.notion.site/2-61c7c69ec0754265a9326a9e264df2d0

 

2장 전자 회로의 조합 논리

컴퓨터는 어떤 논리로 비트를 다루는가

traveling-wallaby-56e.notion.site

 

git 강의

branch와 merge에 대하여 배웠다.

원격에 브랜치를 푸시할 때 일어나는 일들은 아직 조금 생소한 것 같다.

 

항해99에서 골라준 54문제의 코딩 테스트를 완료했다.

https://github.com/fancyers/programmers/tree/main

 

OBS를 활용해서 코딩 테스트 풀이 영상을 찍었다.

 

코딩 테스트 회고

https://programmers.co.kr/learn/courses/30/lessons/67256

 

코딩테스트 연습 - 키패드 누르기

[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

programmers.co.kr

키패드 형태가 아니라 1차원 array로 생각했으면 풀기 더 쉬웠을 것 같다.

앞으로의 코딩 테스트 문제에서도 1차원 array로 푸는 것을 먼저 고려해보자.

   
function distance(a,b) {
  let ax = parseInt(a/3)
  let ay = a%3
  let bx = parseInt(b/3)
  let by = b%3
  return Math.abs(ax-bx)+Math.abs(ay-by)
}

let lf = 9
let rf = 11

function solution(numbers, hand) {
    let answer = ''
    for (let i=0;i<numbers.length;i++) {
      let input
      if (numbers[i] == 0) input = 10
      else input = numbers[i] - 1
      if (input==0|input==3|input==6) {
        lf = input
        answer += 'L'
      } else if (input==2|input==5|input==8) {
        rf = input
        answer += 'R'
      } else if (input==1|input==4|input==7|input==10) {
        if (distance(lf,input) < distance(rf,input)) {
          lf = input
          answer += 'L'
        } else if (distance(lf,input) > distance(rf,input)) {
          rf = input
          answer += 'R'
        } else {
          if (hand == 'right') {
            rf = input
            answer += 'R'
          } else {
            lf = input
            answer += 'L'
          }
        }
      }
    }
    return answer
}

다시 풀어보니 아주 잘 풀렸다.

if (input==0|input==3|input==6) 이런 표현을 짧게 쓰는 방법이 있을까?