[Js] 프로그래머스 prac1

이성규·2022년 11월 19일
0

✅ 직사각형 별찍기

  • 문제 설명
    이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

  • 제한 조건
    n과 m은 각각 1000 이하인 자연수입니다.

ex)

입력
5 3

출력
*****
*****
*****

🔷 풀이

🔶 for문을 이용하기

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    
    // 입력 값 b(3) 만큼 반복문을 돌린다.
  for (let i = 0; i < b; i++) {
    // stars 변수를 초기화 해준다.
    let star = "";

    // 위 for문이 한번 돌아갈 때 마다 입력 값 a(5) 만큼 반복문을 돌린다.
    for (let j = 0; j < a; j++) {
      // stars = stars + "*"
      star += "*";
    }

    // 콘솔에 현재 까지 저장된 stars 값을 찍는다. (*****)
    console.log(star);

    // i가 b(3) 보다 작을 경우 맨 위로가 다시 for문을 시행한다.
   }  
});

🔶 repeat() 함수를 이용하기

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
  
    const row = '*'.repeat(a)
    for(let i =0; i < b; i++){
        console.log(row)
    }
});
  • repeat()는 주어진 문자열을 옵션의 count만큼 반복하여 붙힌 다음에 새로운 문자열로 반환하는 함수이다. 문자열을 반복한 값을 반환하는 함수인 repeat() 함수로써 반복문을 사용하여 반환도 가능하다.
String.prototype.repeat(count)
  • String : 거듭 더할 문자열
  • count : 문자열을 거듭 덧붙이는 횟수

✅ 짝수, 홀수

  • 문제 설명
    정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

  • 제한 조건
    num은 int 범위의 정수입니다.
    0은 짝수입니다.

ex)

num	return
 3	"Odd"
 4	"Even"

🔷 풀이

🔶 repeat() 함수를 이용하기

function solution(num) {
    var answer = '';
    if (num % 2 === 0){
        return answer = "Even"
    }else{
        return answer = "Odd"
    }
    return answer;
}

🔶 삼항연산자를 이용하기

function solution(num) {
    var answer = '';
    return (num%2 === 0 ? "Even": "Odd")
    return answer;
}
  • 조건부 삼항 연산자는 JavaScript에서 세 개의 피연산자를 취할 수 있는 유일한 연산자로, 보통 if 명령문의 단축 형태로 쓰인다.
condition ? exprIfTrue : exprIfFalse

✅ 가운데 글자 가져오기

  • 문제 설명
    단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

  • 제한사항
    s는 길이가 1 이상, 100이하인 스트링입니다.

   s	 return
"abcde"	  "c"
"qwer"	  "we"

🔷 풀이

🔶 if문 이용하기

function solution(s) {
    var answer = '';
    if(s.length%2 ===0){
        answer = s[s.length/2 - 1] + s[s.length/2]
    }else{
        answer = s[Math.floor(s.length/2)]
    }
    return answer;
}
  • 예시에서 "abcde" 문자열의 길이는 5이다. 출력 값은 "c"이고 인덱스 값은 2이다.
    즉, 5 / 2 = 2.5인데, 인덱스 값을 구하려면 반내림을 해야한다.
  • "qwer" 문자열의 길이는 4이다. 출력값은 "we"이고 인덱스값은 각각 1,2이다.
    즉, 4 / 2 = 2인데, 인덱스 값을 구하려면 -1을 해주어야하고, 두번째값에 대해서는 4 / 2 = 2
    가 성립한다. 짝수값은 각각의 값을 더해주어야 하므로 위의 코드가 만들어졌다.

📌 올림 / 내림 / 반올림

▶ 올림

// 올림
Math.ceil([숫자]);
  • Math.ceil 은 소수값이 존재할 때 값을 올리는 역활을 하는 함수이며,

▶ 내림

// 반내림
Math.floor([숫자]);
  • Math.floor 는 소수값이 존재할 때 소수값을 버리는 역활을 하는 함수

▶ 반올림

// 반올림
Math.round([숫자]);
  • Math.round 는 소수값에 따라 올리거나 버리는 역활을 하는 반올림 함수

🔶 삼항연산자 이용하기

// 방법 1
function solution(s) {
    var answer = '';
    return s.length % 2 ===0 ? s.substr(s.length/2-1,2) : s.substr(parseInt(s.length/2),1)

}

// 방법 2
function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);

}
  • substr()은 문자열에서 특정 부분을 잘라낼 때 쓰인다.
    -> substr(시작위치 , 자를 길이)

  • 시작위치는 Math.ceil(s.length / 2) -1 -> 문자의 길이를 반으로 나눈 후 Math.ceil()로 올림 하고, 1을 뺴준다.

  • 자를 길이는

짝수
-> 문자의 길이를 반으로 나누고 나머지가 0일 때 길이는 2
홀수
-> 문자의 길이를 반으로 나누고 나머지가 0일 때 길이는 1
profile
개발자를 위한 발걸음

0개의 댓글