211129 TIL [JS] 반복문, 조건문 문제

김풀연·2021년 11월 29일
0

TIL

목록 보기
24/32

1. 구구단

1. 구구단 출력하기

이렇게 출력만 하는 건 의미가 크지 않다고 생각해서 값을 배열이나 객체에 저장하는 코드를 짜보았다.

2. 배열에 저장하기

  • push() 메서드를 통해서 배열 arr에 값을 넣어주었다.

3. 객체에 저장하기

  • 계산된 프로퍼티 이름으로 프로퍼티 키를 동적 생산 하여 담아주었다.

1. for문 안에서 객체를 생성

  • 객체에 값을 담는 건 성공했지만, 하나의 객체에 담기지 않고 수십개의 객체가 만들어졌다.
  • for문 안에서 객체 obj를 생성했기 때문에 for문 바깥에서는 접근할 수 없다.

2. for문 밖에서 객체를 생성

  • 하나의 객체에 모든 프로퍼티가 담겼다.
  • for문 바깥에서 객체 obj를 생성했기 때문에 for문 바깥에서도 접근할 수 있다.

2. 숫자 카운팅 하기

Q. 1부터 10,000까지 8이라는 숫자가 총 몇번 나올까? 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라, 8이라는 숫자를 모두 카운팅 해야 한다.
(※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 한다.)

1. 내가 푼 방법

  • i를 string으로 타입변환하여 text에 할당하였다.
  • text의 길이만큼 반복문을 돌면서 '8'일 때만 result에 1씩 추가되도록 하였다.
  • 변수 하나하나를 반복문으로 돌리는 거라 좋은 코드 같지는 않아 보인다.

2. 강사님 방법

  • 모든 i를 string 타입으로 더하여서 text에 담았다.
  • 그 후 변수 text에서 변수text의 길이만큼 8을 찾는 반복문을 만들었다.

최댓값/최솟값 구하기

1. if문

  • 배열 안에서 반복문을 돌면서, 기존에 temp에 할당된 값보다 큰 경우에만 재할당 하여 가장 큰 값을 찾는다.

2. 삼항 조건 연산자

  • if문 대신 삼항 조건 연사자를 이용해 보았다.

두 글자씩 자르기

  • 문자열은 유사 배열이므로 인덱스를 이용해서 각 문자에 접근할 수 있다.

가장 거리가 짧은 숫자쌍 출력하기

Q. 1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.)
예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.

  • 배열이 모두 정렬되어 있다고 가정하였기 때문에, 배열에서 옆 요소와의 거리만 따져주면 된다.
  • 반복문을 돌면서, i+1번째와 i번째 요소의 거리를 계산하고 이전 값과 비교하여, 작은 값을 계속 재할당 해주었다.
  • 필요한 값은 최소 거리일 때의 숫자쌍이기 때문에, 숫자의 인덱스를 result에 저장한다.
profile
<strong>가보자고🚀</strong>

0개의 댓글