제코베 문제풀이 16~20

김민호·2021년 8월 5일
1
post-thumbnail
  • split( ) 함수
  • reverse( ) 함수
  • join( ) 함수
  • 공백으로 구분된 숫자들을 prompt로 받아서 split으로 배열 만들기
  • sum = sum + i
  • parseInt( )함수
  • Math.floor( )함수

🔥 문제16 : 로꾸거

문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다.

입출력

입력 : 거꾸로
출력 : 로꾸거
내 풀이 ⭕️

'문자열을 거꾸로 출력해주는 메소드가 있지 않을까?'라고 생각하고 검색
하지만 문자열을 거꾸로 출력해주는 메소드는 없고
1) split함수를 이용해서 문자열을 배열로 바꾼 다음
2) reverse함수를 이용해서 순서를 뒤집고
3) join 함수를 이용해서 다시 문자열로 합쳐줘야 한다는 것을 알게 됨

let n = prompt("단어를 입력하세요")

console.log(n.split('').reverse().join(''))
수정

이게 더 보기 편한 것 같음

let n = prompt("단어를 입력하세요").split('').reverse().join('')

console.log(n)
답안
const n = prompt('입력하세요.');

const reverseString = n.split('').reverse().join('');
/*
* split() 메서드는 문자열을 배열로 만들어 반환하고,
* reverse() 메서드는 배열의 순서를 반전하며,
* join() 메서드는 원소를 모두 붙여 문자열로 반환합니다.
*/
console.log(reverseString);
다른 풀이

for문으로 푸는 법

let word = prompt("단어를 입력하세요");

let reverse = '';

for ( let i = 0; i < word.length; i++){
  reverse = word.split('')[i] + reverse // 🔴
}

console.log(reverse)

1) word를 prompt로 받고
2) 변수 reverse에 빈 문자열 '' 선언
3) for문을 통해서 문자열을 문자 배열로 만들어주고
4) 첫 번째 요소부터 빈 문자열reverse에 넣어주고
5) 다음 요소는 위에 넣어진 문자열 앞에 넣어주는 과정

🔴 이 부분 (word를 "가나다라마바사"로 받는다고 가정)
reverse = word.split('')[i] + reverse 일 경우 : 사바마라다나가
reverse = reverse + word.split('')[i] 일 경우 : 가나다라마바사


🔥 문제17 : 놀이기구 키 제한

유주는 놀이공원 아르바이트 중입니다. 그런데 놀이기구마다 키 제한이 있습니다.

유주가 담당하는 놀이기구는 키가 150cm 이상만 탈 수 있습니다.

입력으로 키가 주어지면 키가 150이 넘으면 YES를 틀리면 NO를 출력하는 프로그램을 작성하세요.

내 풀이 ⭕️
let height = prompt("키를 입력하세요", "단위 cm 생략하고 숫자만")

if ( height >= 150) {
  console.log("YES");
} else {
  console.log("NO")
}
답안
const height = prompt("키를 입력하세요.");

if (height >= 150){
  console.log("YES");
} else {
  console.log("NO");
}

🔥 문제18 : 평균 점수

영하네 반은 국어, 수학, 영어 시험을 보았습니다. 영하는 친구들의 평균 점수를 구해주기로 했습니다.

공백으로 구분하여 세 과목의 점수가 주어지면 전체 평균 점수를 구하는 프로그램을 작성하세요. 단, 소숫점 자리는 모두 버립니다.

입출력

입력 : 20 30 40
출력 : 30
내 풀이 ❌
console.log(Math.floor((a+b+c)/3))

이거 하나 생각해냄.... 하... 나란 놈...

1️⃣ const scores = prompt('세 과목의 점수를 입력하세요.').split(' ');

2️⃣ let sum = 0;

for (i=0; i<3; i++){
3️⃣  sum = sum + parseInt(scores[i], 10)
}

4️⃣console.log(Math.floor(sum/3));

1️⃣ "공백으로 구분하여 세 과목의 점수가 주어지면"을 어떻게 코드로 구현해야 할까
ex) 10 20 30

  • prompt('숫자를 입력하세요').split(' ');
  • 여기서 prompt값에 split함수를 쓰면 공백으로 구분되어 입력된 숫자들로 배열이 만들어짐 ["10", "20", "30"]

2️⃣ for문에서 나온 i들을 순서대로 하나씩 문자열로 더할 때 let sum = 0을 설정해놓고 sum = sum + i 로 더하기

  • 배열로 합칠 경우는 어떻게 했더라... 빈 배열을 변수에 선언해놓고 시작했던 것 같은데... ✍🏼

🔵 빈 배열[ ]에 r += ["string"]으로 요소 추가하기
-> 결과 : "안녕하세요 또 만나네요 또 만나네요 안녕하세요 안녕하세요 "
-> console.log(typeof(helloBot1(group2))) // "string"

let group2 = [0,1,1,0,0];
let result1 =[];

const helloBot1 = people => {
  
  for (let i = 0; i < group2.length; i++) {
    
    if (group2[i] === 0) {
      result1 = result1 + ["안녕하세요 "];
    
     
    } else {
      result1 = result1 + ["또 만나네요 "];
     
    }
  }
  
  return result1;
}

console.log(helloBot1(group2))
// "안녕하세요 또 만나네요 또 만나네요 안녕하세요 안녕하세요 "

🔵 빈 배열[ ]에 배열.push("string")으로 요소 추가하기
-> 결과 : ["안녕하세요", "또 만나네요", "또 만나네요", "안녕하세요", "안녕하세요"]
-> console.log(typeof(helloBot(group1))) // "object"

let group1 = [0,1,1,0,0];
let result =[];

const helloBot = people => {
  
  for (let i = 0; i < group1.length; i++) {
    
    if (group1[i] === 0) {
      result.push("안녕하세요");
     
    } else {
       result.push("또 만나네요");
    }
  }
  
  return result;
}



console.log(helloBot(group1))

["안녕하세요", "또 만나네요", "또 만나네요", "안녕하세요", "안녕하세요"]

3️⃣ parseInt( string, n )

  • string을 n진법의 숫자로 바꿔줌
  • n은 진법을 나타내며, 2~36까지 입력 가능, 입력안하면 기본 10진법 적용
  • 띄어 쓰기로 여러 개의 수가 있으면 첫번째 수만 바꿈
  • 공백으로 시작하면 공백은 무시
  • 수가 아닌 문자로 시작하면 NaN을 반환
  • cf) parseFloat( string ) 는 실수로 변환

4️⃣ Math.floor(number) : 어떤 수보다 크지 않은 최대의 정수를 반환 = 내림

  • Math.ceil() : 어떤 수보다 작지 않은 최소의 정수를 반환 = 올림
  • Math.round() : 어떤 수와 가장 가까운 정수를 반환 = 반올림
답안
const scores = prompt('세 과목의 점수를 입력하세요.').split(' ');
let sum = 0;

for (let i=0; i<3; i++){
  sum += parseInt(scores[i], 10); // 십진수의 형태의 숫자로 데이터 타입을 변환합니다.
}

console.log(Math.floor(sum/3)); //Math.floor 메서드는 소수점 자리를 모두 버림합니다.

🔥 문제19 : 제곱을 구하자

공백으로 구분하여 두 숫자 a와 b가 주어지면, a의 b승을 구하는 프로그램을 작성하세요.

내 풀이 ⭕️
let numbers = prompt("두 점수를 입력하세요.").split(' ');

 a0 = parseInt(numbers[0], 10)
 a1 = parseInt(numbers[1], 10)
 
console.log(Math.pow(a0, a1))
답안
const n = prompt('수를 입력하세요.').split(' ');

console.log(Math.pow(parseInt(n[0], 10), parseInt(n[1], 10)));

🔥 문제20 : 몫과 나머지

공백으로 구분하여 두 숫자가 주어집니다.

두번째 숫자로 첫번째 숫자를 나누었을 때 그 몫과 나머지를 공백으로 구분하여 출력하세요.

입출력

입력 : 10 2
출력 : 5 0
내 풀이 ⭕️
let numbers = prompt("두 점수를 입력하세요.").split(' ');

// ex) numbers = ["10", "2"]

let a0 = parseInt(numbers[0], 10)
let a1 = parseInt(numbers[1], 10)

let Division = a0 / a1
let Remainder = a0 % a1

console.log(Math.floor(Division), Remainder)
답안
const n = prompt('수를 입력하세요.').split(' ');

const result = Math.floor(parseInt(n[0], 10) / parseInt(n[1], 10));
const left = parseInt(n[0], 10) % parseInt(n[1], 10);

console.log(result, left);
profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀

0개의 댓글