all category

programmers

[Programmers Level 0] 캐릭터의 좌표 Javascript

문제정보 쉽게 풀 수 있을 것 같았는데 조금 애먹은 문제입니다.그냥 냅다 좌표를 움직여주면 끝~ 이라면 if문만으로 처리할 수 있는데맵크기를 제한시켜버리니까 곤란해지네요 예시 keyinput board result ["left", "right", "up", "right", "right"][11, 11] [2, 1] ["down", "down", "down", "down", "down"][7, 9] [0, -4] 나의풀이 function solution(keyinput, board) { let row = 0 let column = 0 for(i=0 ; i < keyinput.length ; i++) { if(keyinput[i] == "left" && Math.abs(row)

programmers

[Programmers Level 0] 숨어있는 숫자의 덧셈(2) Javascript

문제정보 문자열이 매개변수로 주어지는데 소문자 대문자 자연수가 섞여있는 문자열이네요 그 사이에서 자연수값들만 찾아서 더해주면 되는 문제인데 한가지 까다로운점이 연속된 수는 하나의 숫자로 간주한다는 것이었습니다. 저는 어떻게 해결할지 생각해보다가 charCodeAt을 통해 아스키코드로 문제를 푸는 방법을 택했습니다. 숫자 0~9의 아스키코드는 48~57이니까 대문자는 65~90 소문자는 97~122 이고 소문자 대문자 자연수만으로 구성되어있으니 아스키코드가 57보다 크면 일단 숫자는 아니겠군요 예시 my_stringresult "aAb1B2cC34oOp"37 "1a2b3c4d123Z"133 나의풀이 function solution(my_string) { let answer = 0 let counter = ..

programmers

[Programmers Level 0] 치킨 쿠폰 Javascript

문제정보 서비스 치킨을 얼마나 먹을 수 있을지 구하는 문제입니다. 예전엔 치킨 시켜먹으면 열마리 모았을때 한마리 공짜인 쿠폰 하나씩 주는게 국룰이었는데 요새는 많이 사라지고 있는 문화같아서 안타까운.. 나중에는 치킨쿠폰이란게 뭔지도 모르는 애들도 나오는 거 아님? 하여간 서비스 치킨에도 쿠폰을 주는 거 보면 굉장히 인심이 넉넉한 사장님인 것 같네요 구현하는 건 쉬울 것 같습니다. 나의풀이 function solution(chicken) { let counter = 0 while(chicken > 1) { counter += chicken / 10 chicken = chicken / 10 } return Math.floor(counter) } counter가 서비스로 받은 치킨라고 생각하면 쉽습니다. ch..

programmers

[Programmers Level 0] 외계어사전 Javascript

문제정보 문자열로 이루어진 배열 두개가 주어집니다. 리트코드에서 비슷한 유형의 문제를 풀었던 기억이 있어서 그걸 토대로 풀어봤습니다 leetcode 500 keyboard row라는 문제랑 굉장히 흡사하네요!! forEach를 이용해서 dic의 각 요소들을 split해주고 spell의 단어들을 모두 가지고 있는 단어들을 찾아서 answer 배열에 넣어준 다음 answer 배열의 길이가 0이 아니라면 1을 0이라면 2를 반환하게하면 될 것 같습니다 나의풀이 function solution(spell, dic) { let answer = [] //정답을 저장해줄 배열 dic.forEach(ele => { let spliter = [...new Set(ele)] // 각요소를 set으로 만들어 중복을 없애고 ..

cheetsheet

[Cheat Sheet] 특정 문자열을 모두 가진 배열 요소를 찾는 코드

var findWords = function(words) { let row1 = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p']; let row2 = ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l']; let row3 = ['z', 'x', 'c', 'v', 'b', 'n', 'm']; let answer = []; words.forEach(x => { let spliter = x.toLowerCase().split(''); if(spliter.every(j => row1.includes(j))) answer.push(x) if(spliter.every(j => row2.includes(j))) answer.push(x) if(s..

programmers

[Programmers Level 0] 문자열 밀기 Javascript

문제정보 레벨은 0인데 꽤나 어려웠던 문제입니다. 일단 오른쪽으로 한칸씩 밀고 마지막 문자는 맨 앞으로 이동시켜야하는군요 pop()을 해서 마지막 문자를 뽑아주고 그걸 unshift()로 맨 앞에 넣어주는 식으로 구현할 수 있을 것 같았습니다. 민 횟수를 답으로 반환해야하니 민 횟수를 계산해줄 카운터도 필요하겠네요 예시 ABresult "hello""ohell"1 "apple""elppa"-1 만약 아무리 위치를 돌려도 안되는 경우엔 -1을 반환해주면 되는군요 나의풀이 function solution(A, B) { let counter = 0 let Asplit = A.split('') for(i=0;i(b+b).indexOf(a) 만약 A가 HELLO B가 OHELL인 케이스로 생각하면 let solu..

cheetsheet

[Cheat Sheet] 대문자, 소문자, 숫자 아스키코드 값

숫자 48 ~ 57 소문자 97 ~ 122 대문자 65 ~ 90

programmers

[Programmers Level 0] 컨트롤제트 Javascript

문제정보 뭔가 리트코드에서 이거랑 비슷한 문제를 풀었던 기억이 나는 것 같은데요 리트코드보다 조건이 훨씬 간단하게 주어졌네요 비슷한 방식으로 풀면 되겠다는 생각이 들었습니다. 공백으로 구분되니 공백을 기준으로 split해주면 되겠네요 예시 sresult "1 2 Z 3"4 "10 20 30 40"100 "10 Z 20 Z 1"1 "10 Z 20 Z"0 "-1 -2 -3 Z"-3 나의풀이 function solution(s) { let answer = 0 let arr = s.split(" ") for(i=1 ; i acc + cur ) } LIFO구조라고하면 거창해보이지만 구현은 간단합니다. 배열에 Z가 아닌 요소들을 push해주면 가장 나중에 들어간 요소는 배열의 가장 뒤에 위치할것입니다. Z를 만났을..