[문제 1] 다음 메일 주소의 "@"를 기준으로 id 값과 domain 값으로 출력하시오.

 const email = "javascript@mail.com";
[출력예시]
id: javascript
domain: mail.com
더보기
[풀이]

const email = "javascript@mail.com";

// 문자열에서 "@"를 찾아 변수에 대입
const find = email.indexOf("@");

// 0번째 부터 "@"전 까지 문자열 리턴
const id = email.substring(0, find);

// "@" 이후의 모든 문자열 리턴
const domain = email.substring(find+1);

console.log("id: " + id);
console.log("domain: " + domain);

↑ 풀이방법 보기

 

[문제 2] 다음 주민번호의 값을 사용하여 생년월일, 나이, 성별을 출력하시오. (현재 년도는 now_year 변수에 저장한다.)

const jumin = "020517-3******";
[출력예시]
2002년 5월 17일에 태어난 21세 남자 입니다.
더보기
[풀이]

const jumin = "020517-3******";

// Date() 객체를 활용해서 현재 년도를 구한다
const date = new Date();
const now_year = date.getFullYear();

// 주민번호의 각 번호를 변수에 대입
let yy = parseInt(jumin.substring(0,2));
let mm = parseInt(jumin.substring(2,4));
let dd = parseInt(jumin.substring(4,6));
let gen = parseInt(jumin.substring(7,8));

// 2000년대 생인지 1900년대 생인지 구한다.
yy = (gen > 2) ? yy + 2000 : yy + 1900;

// 나이 계산
const age = now_year - yy + 1;

// 성별 계산
// 나머지 값이 1이면 true 값, 0이면 false 값 리턴
const gender = (gen % 2) ? "남자" : "여자";
console.log(`${yy}년 ${mm}월 ${dd}일에 태어난 ${age}세 ${gender}입니다.`);

↑ 풀이방법 보기

 

[문제 3] 아래 문장에서 "수업시간"이라는 단어가 총 몇 번 나오는지 카운트하시오.

let str = "수업시간에 배운것은 수업시간에 다 이해하고 넘어가야지 수업시간에 놓치면 따라오기 힘들다";
[출력예시]
총 3번
더보기
[풀이]

let str = "수업시간에 배운것은 수업시간에 다 이해하고 넘어가야지 수업시간에 놓치면 따라오기 힘들다";

// 찾을 단어를 변수에 대입
const word = "수업시간";

// 찾는 값의 길이 대입
const flen = word.length;

// 무한 반복하기 위한 변수 생성
let find = true;

// 카운트 초기화
let count = 0;

// 범위를 알 수 없어서 무한반복으로 찾는다.
while(find) {
  // 반복해서 찾은 단어의 인덱스를 found 변수에 대입한다.
  found = str.indexOf(word);
  // 찾은 값이 true면 find에 대입, false(-1)이면 반복을 멈춘다.
  find = found > -1;

  // find가 true면
  if(find) {
    count++;  // 1씩 카운트
    // 찾은 값은 잘라내고 문자열 변수에 대입
    str = str.substring(found + flen);
  }
}
console.log(`총 ${count}번`);

↑ 풀이방법 보기

 

[문제 4] 아래 주어진 범위 안에서 랜덤한 숫자를 추출하는 함수를 사용하여 다음 조건을 충족하는 로또 번호 생성기를 프로그래밍하시오.

  • 0개의 원소를 갖는 배열 lotto를 생성하고 6회의 반복을 수행하는 for문을 사용하여 배열의 각 원소를 1~45 사이의 범위를 갖는 임의의 숫자로 채워 넣으시오.
  • 반복이 종료되었을 때 lotto의 원소는 6개의 숫자가 채워져 있어야 하고 각 숫자는 중복되지 않아야 한다.
  • 중복되지 않는 숫자를 생성하기 위해 for문 안에서 무한반복을 위한 while문을 수행하시오.
 
function random(n1, n2) {
    return parseInt(Math.random() * (n2 - n1 + 1)) + n1;
}
더보기
[풀이]

function random(n1, n2) {
  return parseInt(Math.random() * (n2 - n1 + 1)) + n1;
}

// 0개의 원소를 갖는 빈배열 생성
const lotto = [];

// 6회 반복 수행
for(let i = 0; i < 6; i++) {

  // 중복되지 않는 숫자가 몇 번째에 생설 될지 알수 없기 때문에 무한 반복 처리
  while(true) {

    // 랜덤 숫자 대입
    const ran = random(1,45);

    // lotto 배열에 ran 값이 포함되지 않아있다면
    if(!lotto.includes(ran)) {
      // lotto 배열에 ran 값 추가
      lotto.push(ran);
      break;
    }
  }
}
console.log(lotto);

↑ 풀이방법 보기

 

[문제 4-1] 다음의 조건을 만족시켜 로또 번호 생성기를 프로그래밍하시오.

  • 1~45 사이의 범위의 1씩 증가 하는 원소가 저장되어 있는 배열 balls을 생성하고 6개의 빈 칸을 갖는 배열 lotto를 생성하시오.
  • lotto 배열을 탐색하는 반복을 수행하면서 balls 배열에서 임의의 원소 하나를 추출하여 lotto 배열에 채워 넣으시오.
  • 추출된 숫자는 balls 배열에서는 삭제되어야 합니다.
더보기
[풀이]

function random(n1, n2) {
  return parseInt(Math.random() * (n2 - n1 + 1)) + n1;
}

// 1~45의 배열값을 선언
let balls = [];
for(let i = 0; i < 45; i++) {
  balls[i] = i + 1;
}

// 6개의 빈배열을 가진 변수 선언
let lotto = new Array(6);

// lotto 변수의 길이만큼 반복
for(let i = 0; i < lotto.length; i++) {

  // balls의 범위안에서 랜덤값 대입
  const ran = random(0, balls.length-1);

  // lotto 배열안에 balls 랜덤 값 대입
  lotto[i] = balls[ran];

  // 추출된 값은 삭제한다.
  balls.splice(ran, 1);
}
console.log(lotto);

↑ 풀이방법 보기

 

[문제 5] 현재 날짜를 기준으로 올해 며칠이 지났는지 계산하시오. 

[출력예시]
(현재날짜) 기준 00일 지났습니다.
더보기
[풀이]

// 날짜 객체 생성
const date = new Date();

// 객체의 시간을 문자열로 반환
const today = date.toLocaleString('ko-KR');

// 밀리세컨드로 변환
const ms = date.getTime();

// 현재 년도 , 0(1월), 1일을 파라미터 값으로 받는 객체 생성
const day1 = new Date(date.getFullYear(), 0, 1);

// 받은 값을 밀리세컨드로 변환
const ms1 = day1.getTime();

// 지금까지 지나온 총 시간 - 현재년도 1월 1일 을 뺀다.
const calc1 = ms - ms1;

// 계산 결과를 원하는 단위로 환산 -> (24시간 * 60분 * 60초 * 1000) 을 나눈다
// 과거 시점으로부터 지나온 시간을 계산할 경우 소수점을 내린다.
const result1 = Math.floor(calc1 / (24 * 60 * 60 * 1000));

console.log(`${today} 기준 ${result1}일 지났습니다.`);

[출력]
// 2022. 2. 16. 오전 12:19:55 기준 46일 지났습니다.

↑ 풀이방법 보기

 

[문제 5-1] 현재 날짜를 기준으로 올해 며칠이 남았는지 계산하시오.

[출력예시]
(현재날짜) 기준 00일 남았습니다.
더보기
[풀이]

// 날짜 객체 생성
const date2 = new Date();

// 객체 시간을 문자열로 반환
const today2 = date2.toLocaleString("ko-KR");

// 밀리세컨드로 변환
const ms2 = date2.getTime();

// 현재 년도, 11(12월), 31일을 파라미터 값으로 받는 객체 생성
const day2 = new Date(date2.getFullYear(), 11, 31);

// 받은 값을 밀리세컨드로 변환
const ms3 = day2.getTime();

// 객체 파라미터로 받은 현재년도 마지막 날 - 지금까지 지난 시간
const calc2 = ms3 - ms2

// 미래의 시점으로 남은 시간을 계산할 경우 소수점을 올린다.
const result2 = Math.ceil(calc2/ (24 * 60 * 60 * 1000));

console.log(`${today2} 기준 ${result2}일 남았습니다.`);

[출력]
// 2022. 2. 16. 오전 12:42:07 기준 318일 남았습니다.

↑ 풀이방법 보기

+ Recent posts