Continue vs Break
| 키워드 | 목적 | 작동 방식 | 사용 예시 |
|---|
break | 반복문을 완전히 종료 | 현재 반복문에서 빠져나감 | 특정 조건(예: 특정 값 발견)에서 반복 종료 |
continue | 현재 반복을 건너뛰고 다음 반복으로 | 현재 반복의 나머지 코드 무시 | 특정 조건(예: 홀수일 경우)에서 다음 반복으로 이동 |
연습문제 1

- 헷갈렸던 점들 : 정답일 때의 break 포인트, 도전횟수 차감 수식 위치
// 랜덤한 정답 생성
let secret = Math.floor(Math.random() * 100) + 1;
// 입력 기회 저장
let countDown = 5;
// 최소값, 최대값
let min = 1;
let max = 100;
while (true) {
// 난이도 설정
let level = prompt(`
난이도를 선택하세요!
[1. 상 (3번의 기회) | 2. 중 (6번의 기회) | 3. 하 (10번의 기회)]
`);
switch (level) {
case '상':
case '1':
countDown = 3;
break;
case '중':
case '2':
countDown = 6;
break;
case '하':
case '3':
countDown = 10;
break;
default:
alert('난이도를 다시 입력하세요!');
continue;
}
break; // while break
}
while (true) {
// 사용자의 입력 값
let userAnswer = +prompt(`숫자를 입력하세요! [ ${min} ~ ${max} ]`);
// 입력 범위 검증
if (userAnswer < min || userAnswer > max) {
alert('범위 안의 값을 입력하세요!');
continue;
}
// 입력 횟수 차감
countDown--;
// 정답 판별
if (secret === userAnswer) { // 정답인 경우
alert('정답입니다!');
break;
} else if (secret > userAnswer) {
alert(`UP!!`);
min = userAnswer + 1;
} else {
alert(`DOWN!!`);
max = userAnswer - 1;
}
// 카운트다운 소진 게임 종료 조건
if (countDown === 0) {
alert(`기회가 모두 소진되었습니다. 정답은 ${secret}이었지롱~ ㅋㅋ`);
break;
} else {
alert(`${countDown}번의 기회가 남았습니다.`);
}
}
연습문제 2

// 난이도 설정을 위한 난수설정 최소 최대값
let maxLimit, minLimit;
// 난이도 설정
while (true) {
let level = prompt(`
~~~~~~~~~~~~~~~~~~~~~ 난이도 설정 ~~~~~~~~~~~~~~~~~~~~~
[ 1. 상 (3자리수) | 2. 중 (2자리수) | 3. 하 (1자리수) ]
`);
if (level === '1') {
maxLimit = 900;
minLimit = 100;
} else if (level === '2') {
maxLimit = 90;
minLimit = 10;
} else if (level === '3') {
maxLimit = 9;
minLimit = 1;
} else {
alert('다시 난이도를 입력하세요!');
continue;
}
break;
}
// 문제 번호 생성
let questionNumber = 1;
// 정답, 오답 횟수를 저장
let correctCount = 0;
let wrongCount = 0;
while (true) {
// 무작위 정수 2개 생성
let firstNum = Math.floor(Math.random() * maxLimit) + minLimit;
let secondNum = Math.floor(Math.random() * maxLimit) + minLimit;
// 실제 답 생성
let realAnswer;
// 사칙연산자를 랜덤으로 결정할 숫자 (0, 1, 2)
let markNumber = Math.floor(Math.random() * 3);
// 사칙 연산자
let mark;
if (markNumber === 0) {
mark = '+';
realAnswer = firstNum + secondNum;
} else if (markNumber === 1) {
// 같은 수가 나오면 랜덤 숫자 재생성
if (firstNum === secondNum) {
continue;
}
mark = '-';
realAnswer = firstNum - secondNum;
} else {
mark = 'x';
realAnswer = firstNum * secondNum;
}
// 무조건 firstNumber가 secondNumber보다 크도록 조작
if (firstNum < secondNum) {
let temp = firstNum;
firstNum = secondNum;
secondNum = temp;
}
// 문제 출제
let userAnswer = +prompt(
`Q${questionNumber}. ${firstNum} ${mark} ${secondNum} = ??`
);
// 문제 출제 이후 문제번호 증가
questionNumber++;
// 0인지 확인
if (userAnswer === 0) {
alert('게임을 종료합니다.');
break;
}
// 정답 판별
if (userAnswer === realAnswer) {
alert('정답입니다!');
correctCount++;
} else {
alert('틀렸습니다!');
wrongCount++;
}
} // end while
// 정오답 횟수 출력
alert(`# 정답 횟수: ${correctCount}회, 틀린 횟수: ${wrongCount}회`);
/*
# v1.0 요구사항
시스템은 1~10사이의 무작위의 정수 2개를 생성하여
덧셈 문제를 출제해야 한다.
사용자는 출제된 문제의 정답을 입력할 수 있어야 한다.
시스템은 사용자의 입력값을 확인해서 정답인지 오답인지를
알려줘야 한다.
시스템은 지속적으로 다른 문제를 출제하여 사용자가 0을 입력할 때까지
답을 계속 입력받고 검증해줘야 한다.
# v1.1 요구사항
종료시점에 시스템은 정답횟수와 오답횟수를 출력한다.
# v1.2 요구사항
덧셈이외에 뺄셈, 곱셈을 랜덤으로 추가 출제한다.
# v1.3 요구사항
난이도를 3가지 (상중하)로 설정하여
상 난이도에서는 세자리수 사칙연산문제를 출제
중 난이도는 두자리수
하 난이도는 한자리수
*/