{
function func(){
let i = 10, hap = 0;
while(i > 1){ // ① i가 1보다 작아질 때까지...
if( i % 3 == 1){ // ③ i를 3으로 나눴을 때 나머지 값이 1이 남는 것 == 10, 7, 4
hap += i; // ④ hap에다가 10+7+4 저장함
}
i--; // ② 10, 9, 8, 7... 작아짐
}
document.write(hap); // 결론적으로 ④ 10+7+4의 합인 21이 답이 된다.
}
func(); // 정답 == 21
}
{
function func(){
let a = []; // ① 배열 비어있음.
for( i=1; i<=5; i++){ // ② i가 5가 될 때까지 i 수를 늘림 1,2,3,4,5
a += [i]; // ③ 비어있던 a 배열에 1,2,3,4,5 저장됨
}
document.write(a[2]); // ④ a의 두번째 배열은 3임
}
func(); // 정답 == 3
}
{
function func(){
let a = [1,2,3,4,5,6,7,8,9], cnt = 0;
for( i=0; i<a.length; i++ ){ // i가 9를 넘지 않는 8이 될때까지 i 값 계속 추가됨
if( a[i] % 2 == 0){ // ① a[0]부터 a[8]까지 값 중 2로 나눴을 때 나머지가 0인 값
cnt = cnt + 1; // ② '①'의 조건에 충족하는 횟수만큼 1씩 저장
} // 해당 조건을 충족하는 수 == 2,4,6,8 / 총 4개
}
document.write(cnt); // 정답 == 4
}
func();
}
{
function func(data, exp){ // data == 1 / exp == 5 대입
let result = 1;
for( i=1; i<exp; i++){ // i가 4가 될 때까지
result = result * i;
// 1*1 = 1
// 1*2 = 2
// 2*3 = 6
// 6*4 = 24
}
document.write(result + data); // 정답 : 24 + 1 == 25
}
func(1, 5);
}
{
function func(){
let a = [2,3,2,4,5,6,7,2,3,3,2];
let value = 0;
for( i=0; i<a.length; i++){ // i가 10이 될때까지
if( a[i] != 2 ){ // a 배열 중 2가 아닌 데이터가 있으면
value++; // value수를 증가시켜라
}
}
document.write(value); // 2 아닌 데이터 개수가 7개임
// 정답 == 7
}
func();
}
{
function func(){
let i, j = 0;
for( i=0; i<=8; i++){ // i가 8이 될 때까지
j += i; // 계속 늘어나는 i값을 j에 저장시켜라
// j == 0+1+2+3+4+5+6+7+8
// i의 개수는 0부터 8까지 총 9개임
}
document.write(j+i) // 36 + 9 == 45
}
func();
}
{
function func(){
let a = 12, b = 8, c = 2, d = 3;
a /= b - c * d;
// 12 ÷ ( 8 - 2 × 3 )
// 12 나누기 2
// 6
document.write(a); // 6
}
func();
}
{
function func13(){
let a, b, c, result;
a = 10;
b = 20;
c = 30;
result = a < b ? b/a : c;
// 10보다 20이 클 경우 b를 a로 나눠라 == 20/10 || 아닌 경우 c 출력하라는 뜻
// 20을 10으로 나누면 2가 됨
document.write(result); // 정답 == 2
}
func13();
}
{
function func(){
let a = 0, sum = 0;
while( a < 10 ){ // a가 10이 될때까지
a++; // a값 증가시켜라
if(a % 2 == 1) continue; // a를 2로 나눈 나머지가 1이 되는 값 건너뛰기
sum += a; // 건너뛴 값 제외하고 a값 sum에 저장
// a를 2로 나눈 나머지가 1이 되는 값 == 1, 3, 5, 7, 9 이것들, 즉 홀수 건너뜀
// 2+4+6+8+10 == 30
}
document.write(sum); // 정답 == 30
}
func();
}
{
function func(){
let i = 0, sum = 0;
while( 0 ){ // 함정문제임. 0이 들어가기 때문에 실행X 정답은 == 0
i++;
if( i > 10 ) break;
if( i % 5 == 0) continue;
sum += i;
}
document.write(sum);
}
func();
}
{
function test(arrData){
let result = 0;
for( let i=0; i<arrSubject.length; i++ ){ // i값 3만큼 증가시킴
result += Number(arrSubject[i]); // Number(arrSubject[0]부터 [3]을 더한 총값)을 result에 저장
}
let num = result // num 변수에 100+90+80+70 == 340 저장됨
return num; // num 값 리턴(출력)
}
let arrSubject = ["100", "90", "80", "70"];
let result = test(arrSubject);
document.write(result); // 정답 == 340
}
{
function func(a, b, c){
let answer;
if(a < b) answer = a; // 만약 2 < 5 이면 answer = 2 | 참이므로 answer에 2저장
else answer = b; // 거짓일 경우 answer에 5 저장 | 참이었기 때문에 무시
if(c < answer) answer = c; // 10 < 2일 경우 answer에 10을 저장시켜야 함 | 거짓이기 때문에 무시함
document.write(answer); // 최종적으로 answer == 2가 됨
}
func(2, 5, 10) // 정답 == 2
}
{
function func(n){ // n == 178
let answer;
answer = Math.floor(n/12); // 178 / 12 값 == 14.83333... 사사오입(반올림)하면 15지만 Math.floor를 쓰면 반올림을 하지 않음 / 즉 반내림(?)을 함
return answer; // 정답 == 14
}
document.write(func(178));
}
{
function func(s){
let answer = "";
for(let x of s){ // x 변수에 "webstoryboy" 문자열 저장
if( x != 'w') answer += '#'; // x 중 'w'가 아닌 것들을 '#'으로 바꾼다
else answer += x; // 아니면 그대로 두기?
}
return answer; // "webstoryboy" 중 w가 아닌 걸 전부 #으로 바꿈
// 정답 == w##########
}
let str = "webstoryboy";
document.write(func(str));
}
{
function func(s, t){
let answer = 0;
for(let x of s){ // "wbestoryboy"를 x 변수에 저장
if(x !== t) answer++; // x 중 't'가 아닌 글자수만큼 answer값 1씩 증가시키기
}
return answer; // t 아닌 글자가 총 10자이므로
// 정답 == 10
}
let str = "wbestoryboy";
document.write(func(str, 't'));
}
{
function func(s){
let answer = "";
for(let x of s){ // "webStorBOY10"가 담긴 s값을 x변수에 저장
if(x === x.toUpperCase()) { // x에서 대문자로 되어있는 부분을
answer += x.toLowerCase(); // 소문자로 바꿔라
} else { // 반대로 소문자로 되어 있는 부분은
answer += x.toUpperCase(); // 대문자로 바꿔라
}
}
// 즉 대문자 부분은 소문자로, 소문자 부분은 대문자로 바꾼 것이 답이 됨.
return answer; // 정답 == WEBsTORboy10
}
document.write(func("webStorBOY10"));
}
{
function solution(n) {
var answer = [];
answer = n.toString().split('').reverse().map(val => parseInt(val));
// n을 toString으로 숫자에서 문자열로 바꿈
// split 안에 ''를 넣음 -> 하나하나 쪼개짐 ['1', '2', '3', '4', '5'] 이런 식으로...
// reverse를 통해 배열 안의 값을 전부 거꾸로 정렬함 ['5', '4', '3', '2', '1']
// map(val => parseInt(val)) : 다시 문자열을 숫자(정수)로 변환하고
// 배열(괄호 안에 데이터)형태가 아닌 데이터를 반환해냄
// 즉, 5,4,3,2,1 이렇게 출력함.
return answer; // 정답 == 5,4,3,2,1
}
document.write(solution(12345))
}
{
function solution(arr, divisor) {
var answer = [];
const div = arr.filter( el => el % divisor == 0 );
// filter로 2로 나눴을 때 나머지값이 0인 (즉 2의 배수인) 값을 골라냄 == 2, 4
answer = div.length > 0 ? div.sort( (a, b ) => a - b ) : [-1];
// div.length(2) > 0이 참임 : 참이면 div안의 순서를 a-b 순서로 정렬하고 거짓이면 -1 출력(맞나?)
return answer; // 결론적으로 a-b 순서대로 [2, 4] 출력됨
// 정답 == 2,4
}
document.write(solution([1,2,3,4,5], 2))
}
{
function solution(numbers) {
let answer = 0;
for(let i=0; i<10; i++){ // i 안에 0부터 9까지
if(!numbers.includes(i)){ // 0부터 9까지의 숫자 중에 numbers 배열 안에 없는 값 == 5,9
answer += i; // 5+9 == 14
}
}
return answer; // 정답 == 14
}
document.write(solution([1,2,3,4,6,7,8,0]))
}
{
function solution(n) {
for(let i=1; i<n; i++) { // i를 1부터 9까지
if(n%i === 1) return i; // 10을 1~9로 나눴을 때 나머지가 1인 경우 i를 출력 == 10을 3,9로 나눌 때 1이 남음
// return 위치가 for문 안에 있으므로 3이 나왔을 때 바로 종료시켜서 9는 무시하고 3이 출력됨
}
}
document.write(solution(10)) // 정답 == 3
}