제코베 문제풀이 36~40

김민호·2021년 8월 14일
0
post-thumbnail

🔥 문제36 : 구구단 출력하기

1~9까지의 숫자 중 하나를 입력하면 그 단의 구구단 결과를 한 줄에 출력하는 프로그램을 작성하세요.

입출력

입력 : 2
출력 : 2 4 6 8 10 12 14 16 18
내 풀이 ❌
let n = prompt("원하는 구구단 입력")

for (i=1; i<10; i++){
  let result = n * i
  console.log(result)
}

한 줄에 입력하는 방법을 못 찾았음.... 그냥 빈 문자열 선언 후 추가 해주면 됨!
빈 문자열 선언은 for문 밖에 해주고
let result = '';
for문 안에서 i가 돌 때 마다 빈 문자열에 추가해주기
result = result + i*n + ' ';

답안
const num = prompt('1 ~ 9까지의 숫자 중 하나를 입력하세요.')
let result = '';

for (let i=1; i<=9; i++){
  result += i*num + ' '; 
  //🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴
  // ' '; 여기 공백이 꼭 들어가줘야 함
  //     이해하기 result = result + i*num + ' '
  // ex) result = '' + 1*2 + ' '     👉🏼 '2 '
  //     result = '2 ' + 2*2 + ' '   👉🏼 '2 4 '
  //     result = '2 4 ' + 3*2 + ' ' 👉🏼 '2 4 6 '
  //🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴
}

console.log(result);

🔥 문제37 : 반장 선거 ✍🏼

새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램을 작성하기로 하였습니다.

입력
원범 원범 혜원 혜원 혜원 혜원 유진 유진

출력
혜원(이)가 총 4표로 반장이 되었습니다.
내 풀이 ⭕️

구글링 하여 출현 빈도순 정렬하기 찾음
: 함수의 매개변수로 배열을 넣어 호출하면, 개수가 가장 많은 순으로 요소들을 정렬하여 반환한다.(출현 횟수 포함)
https://curryyou.tistory.com/229

답은 나오게 만들었지만 함수 본문은 이해하지 못했음....ㅎ ✍🏼

function getSortedArr(array) { 
  const counts = array.reduce((pv, cv)=> { 
    pv[cv] = (pv[cv] || 0) + 1; 
    return pv; 
  }, {});  
  
  const result = []; 
  for (let key in counts) { 
    result.push([key, counts[key]]); 
  }
  result.sort((first, second) => {
    return second[1] - first[1]; }); return result; 
}

let n = prompt("입력").split(" ")
let array = n
let name = getSortedArr(array)[0][0];
let score = getSortedArr(array)[0][1];

console.log(name + "(이)가 총 " + score + "표로 반장이 되었습니다.")
답안 ✍🏼

물론 답안도 이해하지 못했음

const array = prompt('이름을 입력해주세요.').split(' ');
let result = {};
let winner = "";

for(let index in array){
  let val = array[index];
  result[val] = result[val] === undefined ? 1 : result[val] = result[val] + 1;
}

winner = Object.keys(result).reduce(function(a, b){
  return result[a] > result[b] ? a : b
});

console.log(`${winner}(이)가 총 ${result[winner]}표로 반장이 되었습니다.`);

🔥 문제38 : 호준이의 아르바이트 ✍🏼

호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다.

1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다.

학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.

입출력

입력 : 97 86 75 66 55 97 85 97 97 95
출력 : 6

🔥 문제39 : 오타 수정하기

혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다.

그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다.

혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다.

문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.

입출력

입력 : querty
출력 : euerty

입력 : hqllo my namq is hyqwon
출력 : hello my name is hyewon
내 풀이 ❌
let n = prompt("문장을 입력하세요")

let pattern = /q/g;

console.log(n.replace(pattern, "e"));

모든 q를 e로 바꿔야 하기 때문에 대문자도 포함되니까
let pattern = /q/ig; 정규식 옵션에 i도 추가해줘야 함
그냥 정규식 옵션으로 ig를 붙이는 것을 디폴트값이라고 생각하자

let n = prompt("문장을 입력하세요")

let pattern = /q/ig;

console.log(n.replace(pattern, "e"));
답안
//1. 함수 사용
const word = prompt('입력하세요.');

function replaceAll(str, searchStr, replaceStr) {
   return str.split(searchStr).join(replaceStr);
}

console.log(replaceAll(word,"q","e"));

//2. 정규식 사용
const word = prompt('입력하세요.');

console.log(word.replace(/q/gi, 'e'));

🔥 문제40 : 놀이동산에 가자✍🏼

테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다.

원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.

첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다.

그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다.

입력
50
5
20
20
20
20
20

출력
2
내 풀이 ❌(실패) 다음에 다시 도전

// let weight = prompt("탑승 제한 무게")
// let people = prompt("탑승 제한 인원")

// let allWeight = prompt("사람 당 몸무게").split(' ');
// let sum = [];

let weight = 50
let people = 5
let allWeight = ["20", "20", "20", "20", "20"]
let sum = []

for (i=0; i<allWeight.length; i++) {
  let ai = parseInt(allWeight[i], 10)
  
 if ( weight > ai ) {
   sum.push(ai)
   
 } else {
  // 
 }
  
  console.log(sum.length)
}
profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀

0개의 댓글