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) 이런 표현을 짧게 쓰는 방법이 있을까?