코테/프로그래머스

    콜라츠 추측 (연습문제 Lv1 / JS)

    https://programmers.co.kr/learn/courses/30/lessons/12943?language=javascript 문제 위 조건식을 반복하고, 몇번 반복했는지 출력을 하는데 500번 까지 시도를 하여도, 1이 되지 않을경우 -1을 리턴하는 문제 입니다. 해당 조건에 따른 반복을 하는 것이기에 while 또는 재귀함수를 생각했습니다. 코드 function solution(num) { let count = 0; while(num!=1 && count!=500){ if(num%2==0) num = num/2 else{ num = num*3+1; } count++; } return num == 1 ? count : -1; } while의 조건식을 설정해주고(num이 1이 되거나, coun..

    하샤드 수 (연습문제 Lv1 / JS)

    https://programmers.co.kr/learn/courses/30/lessons/12947?language=javascript 문제 하샤드 수는, 각 자리의 숫자를 개별로 더한 뒤 기존 숫자를 나누어 떨어지면 true 그렇지 않으면 false를 출력합니다. 코드 function solution(x) { return !(x % String(x).split('').reduce((a, b)=> Number(a) + Number(b))) } 1. ! 를 붙이면 빠르게 boolean 값을 출력할 수 있습니다. 2. String과 split("")를 사용하여 각 자리의 숫자를 나누었습니다. 3. reduce로 각 배열의 숫자를 더해주지만, 배열의 요소들은 string 형태임으로 Number로 다시 바꿔주..

    x만큼 간격이 있는 n개의 숫자 (연습문제 Lv1 / JS)

    https://programmers.co.kr/learn/courses/30/lessons/12954?language=javascript. 문제해석 x값의 배수를 n번 만큼 배열에 대입하는 문제입니다. Lv1 인만큼 쉬운문제이지만 다양한 풀이가 있고 그 다양한 풀이에서 배울점은 정말 많은 것 같습니다. 코드 function solution(x, n) { var answer = []; for (let i = 1; i (i + 1) * v) } 또 아래 코드는 Array를 통해 n의 수만큼 Spread 문법으로 null 값으로 채워 넣게 되고 keys 매서드를 사용하면 null이 0부터 차례대로 자연수가 채워지게 됩니다. 여기서 map을 사용하여 각각의 값을 곱해주게 됩니다. [null, null, null..

    핸드폰 번호 가리기 (연습문제 Lv1 / JS)

    https://programmers.co.kr/learn/courses/30/lessons/12948 문제해석 전화번호가 있으면 뒷 4자리 빼고 전부 *로 표시하는 문제입니다. 코드 slice로 뒷 4자리를 잘라내고, repeat 매서드를 활용하여 길이만큼 *을 반복시켜주었습니다. function solution(phone_number) { let answer = ''; let num = phone_number.length answer = '*'.repeat(num-4) + phone_number.slice(-4) return answer; } 다른사람 풀이에 정규식 방법도 있었습니다. 확실히 코드가 많이 간결합니다. function solution(phone_number) { return phone_n..

    행렬의 덧셈 (연습문제 Lv1 /JS)

    연습문제 > 행렬의 덧셈 Lv1 https://programmers.co.kr/learn/courses/30/lessons/12950?language=javascript 문제정리 2개의 배열이 2차 행렬로 존재하고, 같은 길이의 배열 같은 위치의 숫자끼리 더하는 문제입니다. 솔직히 크게 어렵지 않은 문제이지만 별거 아니지만 다른 방법을 알게되었습니다. 평소 제 방식은 변수 배열을 하나 지정해서 그 변수 배열에 값을 넣고 그 배열을 answer에 또 넣는 방식을 주로 사용해 왔었는데 아래 코드에서는 우선 빈 배열을 넣고 그 배열에 값을 넣는 방식입니다. 개인적인 생각에는 전자는 코드 변경이 쉽고, 후자는 코드가 깔끔해지는 장점이 있는 것 같습니다. 코드 function solution(arr1, arr2)..

    직사각형 별찍기 (연습문제 Lv1 / JS)

    연습문제 > 직사각형 별찍기 Lv1 https://programmers.co.kr/learn/courses/30/lessons/12969?language=javascript 문제 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어지고 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력하는 문제입니다. 쉽게 말해 입력값의 숫자로 n* m 크기의 '*' 로만 이루어진 직사각형을 String으로 출력하는 문제입니다. 코드 입력 된 숫자 만큼 별을 출력하면 되는 문제입니다. split으로 숫자를 각각 나눠주어 숫자를 a, b로 출력해주고 a, b 만큼 반복해서 가로 세로 *을 출력해주는 방식이기 때문에 repeat 메서드를 활용해 주었습니다. process.stdin.set..

    체육복 (탐욕법 Lv1/JS)

    코딩테스트 연습 > 탐욕법 > 체육복 Lv1 https://programmers.co.kr/learn/courses/30/lessons/42862?language=javascript 문제정리 n은 반 인원수 lost는 체육복 잃어버린 학생 번호 reserve 체육복 여벌 있는 학생 번호 프로그래머스 코드실행하여 2개 예제는 통과하기는 쉽지만 제출후 채점하기에서 모든 예제에 통과하는게 생각보다 까다롭다. 모두 통과하기 위해서는 잃어버린 학생의 번호에서 -1, +1 이 존재해야하고, 다른 잃어버린 학생과 겹치면 안되어야 한다. 이러한 조건을 세세하게 만족 시켜줘야 모두 통과할 수 있다. 레벨1 문제 치곤 좀 까다로웠다. 간혹 다른사람이 푼 코드에서 짧고 간결하게 쓴 코드들이 있는데 대부분 모두 통과하지 못하..

    K번째수 (정렬 Lv1 / JS)

    코딩테스트 연습 > 정렬 > K번째수 Lv1 https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript 문제정리 array를 commands의 값에 따라 자르고 정렬시켜 해당 위치에 값이 무엇인지 요구하는 문제입니다. commands의 값이 2중배열로 여러개 존재하다보니 반복문을 사용하였습니다. 코드 commands의 첫 번째, 두 번째 인자는 어디서 부터 어디까지 자르는 값이고 자르는데에는 slice를 사용하였습니다. 그리고 정렬은 sort를 사용하였고 세 번째 인자를 통해 해당 값을 result에 push 하는 방법을 사용했습니다. function solution(array, commands) { let result = [..

    문자열 내 마음대로 정렬하기(연습문제 Lv1 / JS)

    코딩테스트 연습 > 연습문제 > 문자열 내 마음대로 정렬하기 Lv1 https://programmers.co.kr/learn/courses/30/lessons/12915 문제정리 보통 알파벳 순으로 정렬을 한다고 하면은 제일 앞글자로 정렬을 하는 것입니다. 하지만 여기서 문제는, 말 그대로 내 맘대로 정렬하기입니다. 알파벳으로 정렬한다는 것이 무조건 앞의 글자가 아니라는 뜻입니다. 그래서 strings라는 배열과, n이라는 몇 번째 글자를 기준으로 할 것인지 input 값을 줍니다. 그래서 여기서 sort를 사용할 것인데, 항상 무심코 a-b를 주로 사용해 왔는데 조건을 줄 수 있는 것을 MDN을 우연히 보고 알았습니다. https://developer.mozilla.org/ko/docs/Web/Java..

    완주하지 못한 선수(해시 Lv1 / JS)

    코딩테스트연습 > 해시 > 완주하지 못한 선수 Level 1 https://programmers.co.kr/learn/courses/30/lessons/42576?language=javascript 문제 정리 input값 participant, completion 두 개의 배열이 있습니다. 여기서 participant 배열에 인자가 하나 더 추가가 되었는데, 추가된 인자 하나를 찾는 문제 입니다. 코드 제가 생각한 방향은, 돌연변이 하나를 찾는 느낌이기에 알파벳 순으로 정렬을 합니다. 그리고 각각 첫 번째 인자, 두 번째 인자 점점 비교를 하다보면 같지 않은 순간이 올 텐데 같지 않은 순간에 participant의 값을 리턴 하면 된다고 생각했습니다. function solution(participant..