[TIL] Quiz-최대(소)값, 구구단, 특정숫자의 출현 횟수, 짝(홀)수의 합, 배열의 총합(평균)

jay__ss·2021년 12월 5일
0
post-thumbnail

굉장히 기초적인 퀴즈를 대하기까지

"이 정도는 여러분이 풀 수 있습니다!"
라는 말이 죄송스럽게도, 퀴즈에 접근조차 어려웠던 내가
기초문제를 풀어보면서 느낀 점을 우선 적고 간다.

1. 그래도 알아야 하는게 있더라!
->당연하게도 외우고 있어야 할, 혹은 너무 많이 써서 외워지게 된 (나는 이제 이틀 봤으니까 모르는게 당연하다.) 개념(?)들이 있더라
(array[], for문, if문, split ,,,)각종메서드
모르는게 당연하니 구글을 켜고 책을 펴자.
2. 안다고 생각한 개념은 절대 아는게 아니다.
-> 그냥 손이 자연스레 키보드로 가야지만 아는 것이다.
(현재로서는 키보드로 절.대.자연스레 가지 않더라)
3. 수험생이 되어서 펜을 쥐자.
-> 수열모르면 직접 다 대입해보면 정답을 찾을 수 있다. 물론 한 문제만 맞추게 된다는 점은 아쉽지만, 수능과 다른 점은, 지금은 한 문제만 풀면 되는 것이다!!
4. 접근이 도저히 안되면 답을 외우자
-> 평생 외우자는게 아니라, 계속 안풀고 있을바엔 외운다음에 이해하자

//조건문
if (조건문) {
    //조건문이 true면 실행 될 코드
}
//반복문_조건식을 만족하면 계-속 반복된다. 
//만약 for문 안에 if문이 있는데 'else가 없어도 왜 반복되지?'의문갖지말기
for (변수선언+할당문; 조건식; 증감식) {
  //조건식이 true일 경우 반복 실행될 문
}
  • 반복문에서 조건식 -> 증감식(바로 넘어가는) 실행순서가 아니다!!!!!!
  • 반복문을 활용하고자 한다면, 무엇을 반복시키고 싶은지 명확히 하자.
    • 명확히하기 어렵다면, 문제의 답을 손으로 구해보는데, 굉장히 낮은 단계에서 접근한다는 마음으로 모든걸 다 적어보면서 푼다.

이 정도만 알아도 아래의 문제들은 풀수있더라,,,

1. 배열에서 최댓값 구하기

// (반복문을 활용해) 아래의 배열에서 최댓값을 출력하시오.
var arr = [100, 200, 300, 400, 10];

접근전에 알고 갈 지식

  • arr[0] == 100 , arr[1] == 200 ,,,
    • 배열[인덱스(순서_0부터시작)]
  • arr.length == 5
    • 길이를 알려준다. 문자열의 경우 문자의 갯수를 반환(공백을 포함)
  1. 새로운 공간을 마련한다.(최댓값을 담을)
  2. 공간안에 값을 할당한다.
  3. 할당된 값을 arr[0], arr[1],,,,arr[5]까지 비교해서 더 큰 값을 재할당한다

준비 끝!

var x;
x = arr[0] ;

//iteration(반복)의 약어로 i를 많이 씀
for (i=0; i<arr.length; i++) {
  if (x < arr[i]) {  // 할당된 값이 배열의 어느 순서의 값보다 작다면~
    x = arr[i]  // 배열의 어느 순서의 값으로 재할당~(더 큰걸로!)
  }
}

console.log(x)


성공^^


2. 배열에서 최솟값 구하기

위와 똑같은 상황에서 최솟값을 구하자.
수정이 필요한 부분은 하나다.

  1. 할당된 값을 arr[0], arr[1],,,,arr[5]까지 비교해서 더 작은 값을 재할당한다

껌^^


3. 구구단 출력하기 (2단부터 9단)

반복문을 활용하여 구구단을 출력해보자.

원하는 형태
2 X 1 = 2
2 X 2 = 4
...
2 X 9 = 18
3 X 1 = 3
...
9 X 9 = 81

  • 반복하고자 하는 것을 명확히하자.
    • 우선 i단의 i 이다. (2~9)
    • 그리고 곱해지는 수(j)이다. (1~9)
  • 반복하여 증가시켜줄 숫자는 두개이다
    • for문 반복을 두 개 시켜야한다.
  • 2단 일 때엔, 2의 증가는 없어야 하고, 곱해지는 수는 증가가 1씩 있어야 한다.

i x j = i*j (i, j)
2 x 1 = 2 (2, 1)
2 x 2 = 4 (2, 2)
2 x 3 = 6 (2, 3)
...
3 x 1 = 3 (3, 1)
3 x 2 = 6 (3, 2)
...
9 x 9 = 81 (9, 9)

준비 끝.

for(var i=2; i<10; i++) {  //i단에서는 i의 증가가 없어야한다
    for(var j=1; j<10; j++) { //곱해지는수는 1씩 증가
        console.log(`${i} X ${j} = ${i*j}`) 
    } //9까지 곱해지면 위의 for문으로 다시 간다
}


성공^^


4. 1부터 10000까지의 숫자에서 8의 출현 횟수

예를 들어, 1부터 20까지의 8의 출현은 2회이다. (8, 18)
88에서의 카운트는 2가된다. (8이 두개!)
그렇다면, 1부턴 10000까지 총 8의 출현 횟수는?

string(문자열)은 순서를 가진다.
string의 합은 우리가 아는 합이 아니다.

  • '안녕' + '난 성재야' == '안녕난 성재야' 이다.
  • '12' + '34' == '1234' 이다.
    '1234'[0] == '1' 이다.
    '1234'[3] == '4' 이다.
  1. 1부터 10000까지 숫자를 전부 문자열로 더한다
    ('123456789101112...999910000')이렇게!
  2. 문자열은 인덱스를 가지고 있고, 각각의 인덱스를 가진 값들을 8과 비교한다.
    문자열[인덱스] == '비교값'
    (이 때, 비교값에도 따옴표를 작성해주어야 한다. 문자열이니까!!)
  3. 출현 횟수를 저장시킬 공간을 마련한다.
  4. 문자열[인덱스] == '비교값'이라면 '출현 횟수'공간에 1씩 더한다.

준비 끝.

let text = '';  //문자열을 담을 공간

for (let i = 0; i < 10001; i++) {
    text += i;
}
// console.log(text); 한번 확인해보자!

let count = 0;

for (let i = 0; i < text.length; i++) {
    if (text[i] == '8'){  // 문자열 8임에 주의!!!
        count += 1;
    }
}

console.log(count);
>4000

5. 짝수의 합 구하기

  1. 짝수를 출력할 변수 선언
    1.1 2로 나누어서 나머지가 0인 방법
    1.2 0부터 시작해서 2씩 더해주는 방법(홀수라면 1부터 시작)
  2. 위에서 출력된 짝수들을 더할 변수 선언
  3. 원하는 범위까지 반복해서 더해주기
let result = 0;

for(let i=0; i <101;) {
  if(i % 2 == 0){
    result += i;
  }
}

for(let j=0; j<101;){
  result += j;
  j += 2;  // 이게 위로가게된다면, 102가 더해지게 되므로 안됨!!!
}

console.log(result)
>2550

6.1 배열의 합 구하기

  1. 합을 담을 변수를 선언한다.
  2. 위에서 선언한 변수에 배열의 값들을 차례대로 더해준다.
let arr = [10, 20, 30, 40, 50];
let result = 0;
// 1번 방법
arr[0] == 10, arr[1] == 20 ... , arr[n] == 마지막 값
arr[0] + arr[1] + ... + arr[n] -> 배열의 총 합

for(let i=0; i<arr.length; i++) {
  result += arr[i];
}

>150

// 2번 방법
for(let i of arr) {
 console.log(i)
}
> 10 20 30 40 50 // of를 사용하면 value가 나온다.

for(let i of arr) {
  result += i;
}

>150

6.2 배열의 평균 구하기

간단하다. 위에서 구한 합에다가 배열의 length만큼 나눠주면 끝!!

console.log(result/arr.length)

profile
😂그냥 직진하는 (예비)개발자

0개의 댓글