[문제 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일 남았습니다.
↑ 풀이방법 보기
'국비수업 > JavaScript' 카테고리의 다른 글
[Javascript] 비동기처리 (0) | 2022.02.17 |
---|---|
[Javascript] 예외처리 (0) | 2022.02.16 |
[Javascript] 자바스크립트 내장 기능(Math, Date, Number, Array) (0) | 2022.02.15 |
[Javascript] 모듈 / 자바스크립트 내장 기능(형변환, 이스케핑, 비동기, String) (0) | 2022.02.12 |
[Javascript] [연습문제] 클래스 실습 (0) | 2022.02.11 |