2023.03.20 6일차 알고리즘 문제 연습하기
💡배운 것
문제
요약 ➡️ 배열 arr에 있는 숫자 겹치는거 순서대로 반환하되, 겹치는 거 있으면 빼주기
나의 풀이
function solution(arr) {
let arr = "" //빈배열 arr
for (let i = 0; i < arr; i++){ //반복하며 돌다가
if (i !== i+1) { //i랑 i + 1 되는 값이 다르면
//삭제해줘라
}
}
var answer = [];
>
return answer;
}
문제 풀이
문제
나의 풀이
(소요시간 1분)
function solution(num) {
let answer = ''; // 빈 배열을 만들고
if(num % 2 === 0){ // 만약 num의 나머지값이 2와 같다면 = 짝수라면
return "Even" // "Even" 내놔!
} else if (num % 2 !== 0){ // num의 나머지값이 2와 다르다면 = 홀수라면
return "Odd" // "Odd" 내놔
}
return answer;
}
다른 풀이
function solution(num) { // var answer = ''; return num % 2 === 0 ? "Even" : "Odd" }
문제
나의 풀이
(소요시간 - 시간 내 못품)
function solution(phone_number) {
const answer = ''; //값을 담을 빈 배열을 만들어주었다.
const hideNumber = "****" //무조건 4개만 * 붙이면 되니까 * 네개 만들어주었다.
for(let i = 0; i <=phone_number.length; i++){ //반복해서
answer = phone_number.substring(0,-4) + hideNumber //나온 폰넘버의 길이에 -4를 해주어 뒤에서 4개 자르고 * 4개 붙임
}
return solution
}
다른 풀이
문제를 헷갈렸음.. 반대로 생각했다.
원래 문제의 의도는 앞에를 * 로 가리고 뒤에 4글자를 가리는 것이었음.
❗️먼저, type of 를 활용해서 문자열인지 확인해보자
function solution(phone_number) {
let answer = "";
for(let i = 0; i < phone_number.length; i++){
if (i < phone_number.length - 4){
//뒷 4자리의 인덱스 값보다 작을 경우 (= 뒷4자리에 해당되지 않는 경우)/(11-4)7보다 작을경우!
answer += "*" //answer = answer + "*"
} else if (i >= phone_number.length - 4){
//뒷 4글자의 인덱스값에 해당하는 경우
// console.log(phone_number, i, phone_number[i])
answer += phone_number[i] //answer = answer + phone_number[i]
}
}
return answer
}
1. 삼항연산자 사용
function solution(phone_number) {
let answer = "";
for(let i = 0; i < phone_number.length; i++){
answer += (i < phone_number.length - 4 ? "*" : phone_number[i])
//뒷 4자리의 인덱스 값보다 작을 경우 (= 뒷4자리에 해당되지 않는 경우)/(11-4)7보다 작을경우!
// answer += "*" //answer = answer + "*"
// } else if (i >= phone_number.length - 4){
// //뒷 4글자의 인덱스값에 해당하는 경우
// // console.log(phone_number, i, phone_number[i])
// answer += phone_number[i] //answer = answer + phone_number[i]
}
return answer
}
2.메서드 사용 (궁금했던 것!!!)
function solution(phone_number) {
let answer = "";
answer = answer.padStart(phone_number.length - 4, "*");
//뒤 4글자 제외하고 * 로 채웠다요
answer += phone_number.substring(phone_number.length - 4);
return answer;
}
//substring은 문자열에서만 사용 가능! 슬라이스와 동일한데
//슬라이스는 문자열, 배열에서 사용 가능하지만 서브스트링은 문자열에서만 사용가능!
//첫번째 인자로 어디서부터 자를건지, 두번쨰인자는 어디까지 자를건지 보통 첫번째만 넣으면 끝까지 자른다
문제
풀이
1.
function solution(n) {
let answer = '';
for (let i = 1; i <= n; i++){
if (i % 2 === 1){
//홀수일 떄
answer += "수" //answer = answer + "수"
}else if (i % 2 === 0) {
//짝수일 때
answer += "박" // answer = anwer + "박"
}
console.log(answer)
}
}
>
>
//홀수일 때 수, 짝수일 때 박 리턴하기.
//1부터 n 까지의 숫자를 돌면서 수, 박을 넣어주어야 한다.(반복문)
//n을 포함한 값까지 가져와야 한다. 부등호(i<=n;)
2. 조건문 안에 내용 수정
function solution(n) {
let answer = '';
for (let i = 1; i <= n; i++){
if (i % 2 ){
//홀수일 떄
answer += "수" //answer = answer + "수"
}else {
//짝수일 때
answer += "박" // answer = anwer + "박"
}
}
return answer
}
3. 삼항연산자 사용
function solution(n) {
let answer = '';
for (let i = 1; i <= n; i++){
answer += (i % 2 === 1 ? "수" : "박");
} //값이 홀수일 때 수, 짝수일 때 클론옆인 박
return answer;
}
프로그래머스 할 때 아래 이미지처럼 콘솔로그 먼저 찍고 출력값을 먼저 확인해보자