본문 바로가기

알고리즘8

[프로그래머스 - Level 1] 콜라츠 추측 (JS) [문제] 입력된 수가 짝수: 나누기 2 입력된 수가 홀수: *3 +1 결과값이 1이 될 때까지 반복한다. 단, 주어진 수가 1인 경우 0을, 500번 반복할 때까지 1이 되지 않는다면 -1을 반환한다 [로직] 1. num이 1인 경우, 바로 0을 리턴해준다 2. 반복문을 돌며 짝수일 경우 /2 (이때 2로 나눠준 값이 1이면 바로 횟수를 리턴), 홀수일 경우 *3+1을 해준다. 3. 반복 횟수가 500번이 넘어갈 경우 -1을 리턴해준다. [코드] const n = 6; function solution(num) { if (num === 1) { return 0; } for (let i = 0; i < 500; i++) { if (num % 2 ===0) { num = num/2; if (num === 1.. 2022. 7. 20.
[프로그래머스 - Level 1] 이상한 문자 만들기 (JS) [문제] 문자열의 짝수번째 알파벳 → 대문자 문자열의 홀수번째 알파벳 → 소문자 문자열 s는 한 개 이상의 단어로 구성, 짝/홀은 단어별로 인덱스 판단 첫번째 글자는 인덱스 넘버 0이므로, 짝수로 처리 → [try] => [0,1,2] → [hello] => [0,1,2,3,4] → [world] => [0,1,2,3,4] [로직] 1. 단어별 짝수/홀수번째를 판단하기 위해 문자열 s를 배열로 바꾸고(띄어쓰기 기준으로), .map()으로 단어별로 반복하며 배열을 만들어준다. ▶ "try hello world" → ['try', 'hello', 'world'] 2. 다시 .map()으로 각 단어를 돌며 단어를 알파벳 단위 배열로 만들어준다. ▶ [ [ 't', 'r', 'y' ], [ 'h', 'e', .. 2022. 7. 19.
[프로그래머스 - Level 1] 서울에서 김서방 찾기 (JS) [문제] String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아 "김서방은 x에 있다"는 String을 반환. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. [로직] 1. indexOf() 함수를 이용해 "Kim"의 인덱스 넘버를 가져온다. 2. 가져온 인덱스 넘버를 "김서방은 x에 있다"의 형태로 return! [코드] const seoul = ["Jane", "Kim", "Park"]; function solution(seoul) { let index = seoul.indexOf("Kim") return '김서방은 '+index+'에 있다'; } console.log(solution(seoul)); 1. indexOf() 함수를 이용해 ".. 2022. 7. 18.
[프로그래머스 - Level 1] 내적 (JS) [문제] 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. [a, b, c] + [d, e, f] → (a*d) + (b*e) + (c*f) [로직] 1. 배열의 길이가 같으로므 for문을 돌려 [i]번째 인덱스를 가져와 곱한다. 2. answer라는 변수를 만들어 곱한 값을 하나씩 더해준다. [코드] function solution(a, b) { let answer = 0; for (i = 0; i < a.length; i++) { answer += a[i]*b[i]; } return answer; } const a = [1,2,3,4]; const b = [-3,-1,0,2]; const c = [-1,0,1.. 2022. 7. 18.
[프로그래머스 - Level 1] 부족한 금액 계산하기 (JS) 네...? 뭘 하라구요? 일단 for문 돌려서 놀이기구 요금 합계부터 구하고.. 가진 돈 - 요금 합계가 0보다 크면 return 요금 합 - 가진돈을 해볼게요.. function solution(price, money, count) { let sum = 0; for (let i = 0; i 0 ? sum - money : 0); } let price = 3; let money = 20; let count = 4; console.log(solution(price, money, count));// 결과값 : 10 // 위의 코드 살짝 다듬음 function solution2(price, mo.. 2022. 7. 16.
[프로그래머스 - Level 1] 핸드폰 번호 가리기 (JS) 뒤에서부터 4자리 가져오고 → "*"에다가 뒤에서 4번째 전까지의 길이만큼 곱한 걸 합친다! 어제 배운 substr() 함수를 이용해 substr(-1, -4)를 하면 뒤에서 4개 가져올 수 있을줄 알았는데 자세히 보니 'str.substr(시작 인덱스, 추출 개수)'였다 시작을 뒤에서 4번째(-4)부터 해서, 4개 추출 하는 걸로 바꾸니 잘 돌아간다! 그럼 *로 바꿀 번호의 개수는 어떻게 알 수 있을까... 또 머리가 안 돌아가서 찾아봤다! ▼ 오늘의 함수 str.substr(시작 인덱스, 추출 개수) str.substring(시작 인덱스, 끝 인덱스) → 끝 인덱스 앞까지 추출 ※ substring()의 경우 (시작 인덱스 번호, 끝 인덱스 번호+1)로 해야 시작부터 끝까지 다 나옴 "*"로 바꿀 번.. 2022. 7. 16.