[Algorithm] 프로그래머스 문제 풀이 Level 1 (JS/5개)
프로그래머스에 소개된 Level 1 문제 5종을 자바스크립트로 풀이해보았다.
1. 서울에서 김서방 찾기
-
문제 설명
String형 배열 seoul의 element중 “Kim”의 위치 x를 찾아, “김서방은 x에 있다”는 String을 반환하는 함수, solution을 완성하세요.
seoul에 “Kim”은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. - 제한 사항
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- “Kim”은 반드시 seoul 안에 포함되어 있습니다.
-
입출력 예
seoul return [“Jane”, “Kim”] “김서방은 1에 있다” - 나의 풀이
- 풀이 1
function solution(seoul) { var answer = ''; for(let i = 0; i < seoul.length; i++){ // "Kim"의 위치를 찾기 위한 반복문 if(seoul[i] === "Kim"){ answer = i; // "Kim"의 위치를 answer에 대입 return "김서방은 " + answer + "에 있다"; } } }
- 풀이 2
function solution(seoul) { var answer = ''; answer = seoul.indexOf("Kim"); // "Kim"의 위치를 indexOf()를 통해 얻음 return "김서방은 " + answer + "에 있다"; }
- 풀이 1
2. 가운데 글자 가져오기
-
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요.
단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. - 제한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
-
입출력 예
s return “abcde” “c” “qwer” “we” - 나의 풀이
function solution(s) { var answer = ''; let len = s.length; if(len % 2 > 0){ // s의 길이가 짝수인지 홀수인지 판단 answer = s.charAt(len / 2); } else{ answer = s.charAt(len / 2 - 1) + s.charAt(len / 2); } return answer; }
3. 수박수박수박수박수박수?
-
문제 설명
길이가 n이고, “수박수박수박수….”와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요.
예를들어 n이 4이면 “수박수박”을 리턴하고 3이라면 “수박수”를 리턴하면 됩니다. - 제한 조건
- n은 길이 10,000이하인 자연수입니다.
-
입출력 예
n return 3 “수박수” 4 “수박수박” - 나의 풀이
function solution(n) { var answer = ''; for(let i = 0; i < n; i++){ if(i % 2 === 0){ answer += "수"; // 문자열의 홀수번째 자리에 "수" 대입 } else{ answer+= "박"; // 문자열의 짝수번째 자리에 "박" 대입 } } return answer; }
4. 핸드폰 번호 가리기
-
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. - 제한 조건
- s는 길이 4 이상, 20이하인 문자열입니다.
-
입출력 예
phone_number return “01033334444” ”*******4444” “027778888” ”*****8888” - 나의 풀이
- 풀이 1
function solution(phone_number) { var answer = ''; for(let i = 0; i < phone_number.length; i++){ if(i < phone_number.length - 4){ answer += "*"; // phone_number의 마지막 4자리수 전까지 "*" 대입 } else{ answer += phone_number.charAt(i); // 마지막 4자리수는 그대로 대입 } } return answer; }
- 풀이 2
function solution(phone_number) { var answer = ''; let count = 0; while(count < phone_number.length - 4){ answer += "*"; count++; } // phone_number의 마지막 4자리수 전까지 "*" 대입 answer += phone_number.substring(phone_number.length - 4); // 마지막 4자리수는 substring()을 이용하여 그대로 대입 return answer; }
- 풀이 1
5. 숫자 문자열과 영단어
-
문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → “one4seveneight”
- 234567 → “23four5six7”
- 10203 → “1zerotwozero3”
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다.
s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자 영단어 0 zero 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine - 제한사항
- 1 ≤ s의 길이 ≤ 50
- s가 “zero” 또는 “0”으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
-
입출력 예
s result “one4seveneight” 1478 “23four5six7” 234567 “2three45sixseven” 234567 “123” 123 - 입출력 예 설명
- 입출력 예 #1
- 문제 예시와 같습니다.
- 입출력 예 #2
- 문제 예시와 같습니다.
- 입출력 예 #3
- “three”는 3, “six”는 6, “seven”은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.
- 입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.
- 입출력 예 #4
- s에는 영단어로 바뀐 부분이 없습니다.
- 입출력 예 #1
- 제한시간 안내
- 정확성 테스트 : 10초
- 나의 풀이
function solution(s) { var answer = 0; let temp = ''; // 문자열 s를 담을 임시 변수 if(s.length >= 1 && s.length <= 50){ // 조건 체크 1 if(s.charAt(0) !== "z" && s.charAt(0) !== "0"){ // 조건 체크 2 temp = s.replace(/zero/g, "0"); temp = temp.replace(/one/g, "1"); temp = temp.replace(/two/g, "2"); temp = temp.replace(/three/g, "3"); temp = temp.replace(/four/g, "4"); temp = temp.replace(/five/g, "5"); temp = temp.replace(/six/g, "6"); temp = temp.replace(/seven/g, "7"); temp = temp.replace(/eight/g, "8"); temp = temp.replace(/nine/g, "9"); // replace()를 이용해 모든 문자로 된 숫자를 진짜 숫자로 바꿈 } } answer = Number(temp); // 문자열 temp를 숫자타입으로 변환 return answer; }
Leave a comment