"이 정도는 여러분이 풀 수 있습니다!"
라는 말이 죄송스럽게도, 퀴즈에 접근조차 어려웠던 내가
기초문제를 풀어보면서 느낀 점을 우선 적고 간다.
1. 그래도 알아야 하는게 있더라!
->당연하게도 외우고 있어야 할, 혹은 너무 많이 써서 외워지게 된 (나는 이제 이틀 봤으니까 모르는게 당연하다.) 개념(?)들이 있더라
(array[], for문, if문, split ,,,)각종메서드
모르는게 당연하니 구글을 켜고 책을 펴자.
2. 안다고 생각한 개념은 절대 아는게 아니다.
-> 그냥 손이 자연스레 키보드로 가야지만 아는 것이다.
(현재로서는 키보드로 절.대.자연스레 가지 않더라)
3. 수험생이 되어서 펜을 쥐자.
-> 수열모르면 직접 다 대입해보면 정답을 찾을 수 있다. 물론 한 문제만 맞추게 된다는 점은 아쉽지만, 수능과 다른 점은, 지금은 한 문제만 풀면 되는 것이다!!
4. 접근이 도저히 안되면 답을 외우자
-> 평생 외우자는게 아니라, 계속 안풀고 있을바엔 외운다음에 이해하자
//조건문
if (조건문) {
//조건문이 true면 실행 될 코드
}
//반복문_조건식을 만족하면 계-속 반복된다.
//만약 for문 안에 if문이 있는데 'else가 없어도 왜 반복되지?'의문갖지말기
for (변수선언+할당문; 조건식; 증감식) {
//조건식이 true일 경우 반복 실행될 문
}
이 정도만 알아도 아래의 문제들은 풀수있더라,,,
// (반복문을 활용해) 아래의 배열에서 최댓값을 출력하시오. var arr = [100, 200, 300, 400, 10];
접근전에 알고 갈 지식
- arr[0] == 100 , arr[1] == 200 ,,,
- 배열[인덱스(순서_0부터시작)]
- arr.length == 5
- 길이를 알려준다. 문자열의 경우 문자의 갯수를 반환(공백을 포함)
- 새로운 공간을 마련한다.(최댓값을 담을)
- 공간안에 값을 할당한다.
- 할당된 값을 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)
성공^^
위와 똑같은 상황에서 최솟값을 구하자.
수정이 필요한 부분은 하나다.
- 할당된 값을 arr[0], arr[1],,,,arr[5]까지 비교해서 더 작은 값을 재할당한다
껌^^
반복문을 활용하여 구구단을 출력해보자.
원하는 형태
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문으로 다시 간다
}
성공^^
예를 들어, 1부터 20까지의 8의 출현은 2회이다. (8, 18)
88에서의 카운트는 2가된다. (8이 두개!)
그렇다면, 1부턴 10000까지 총 8의 출현 횟수는?
string(문자열)은 순서를 가진다.
string의 합은 우리가 아는 합이 아니다.
- '안녕' + '난 성재야' == '안녕난 성재야' 이다.
- '12' + '34' == '1234' 이다.
'1234'[0] == '1' 이다.
'1234'[3] == '4' 이다.
- 1부터 10000까지 숫자를 전부 문자열로 더한다
('123456789101112...999910000')이렇게!- 문자열은 인덱스를 가지고 있고, 각각의 인덱스를 가진 값들을 8과 비교한다.
문자열[인덱스] == '비교값'
(이 때, 비교값에도 따옴표를 작성해주어야 한다. 문자열이니까!!)- 출현 횟수를 저장시킬 공간을 마련한다.
- 문자열[인덱스] == '비교값'이라면 '출현 횟수'공간에 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
- 짝수를 출력할 변수 선언
1.1 2로 나누어서 나머지가 0인 방법
1.2 0부터 시작해서 2씩 더해주는 방법(홀수라면 1부터 시작)- 위에서 출력된 짝수들을 더할 변수 선언
- 원하는 범위까지 반복해서 더해주기
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
- 합을 담을 변수를 선언한다.
- 위에서 선언한 변수에 배열의 값들을 차례대로 더해준다.
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
간단하다. 위에서 구한 합에다가 배열의 length만큼 나눠주면 끝!!
console.log(result/arr.length)