티스토리 뷰

728x90
반응형

오늘은 배열에 조금 더 어려운 코스를 해보려 한다.

이 문제들은 해본 결과 실제로 프로그래머스 등에서도 연습문제로 출제가 된 예시문과 많이 일치함을 알 수 있다.

 

 

 

에라토스테네스의 체

그리스의 수학자이자 지리학자인 에라토스테네스가 고안한 소수를 찾는 방법은 다음과 같다.

 

1) 시작수를 2로 한다.

시작은 2로 시작하고 자연수를 쭈욱 나열한다.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20

2) 2를 제외한 2의 배수에 해당하는 수를 지운다.

소수는 1과 자기자신을 가지기 때문에 1, 2를 가지고 있는 소수 2를 제외한 2의 배수를 지운다.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20

(와 이런 생각 한번도 해보지 못하였다...)

 

3) 시작수를 3으로 한다.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20

 

4) 3을 제외한 3의 배수에 해당하는 수를 지운다.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20

여기서 3의 배수중 남아있는 9와 15를 지우면 된다.

 

5) 이런식으로 5의 배수 7의 배수 11의 배수 등을 지워주면 된다. 

 

 

과제 31. 10진수에서 8진수로 변환하는 스크립트

16을 입력하였을 때 결과

사실 진수변환은 고등학교 이후로는 잘 쓰이지 않지만

개발을 하는 개발자들에게는 2진수의 개념 정도는 어느 정도 있다.

8진수로 변환해주는 코드

아무래도 컴퓨터가 1과 0을 이루고 있는 코드기 때문인데...

사실 8진수 16진수가 어디에 쓰이는지는 잘 모르지만, 개념과 변환하는 간단하게는 알아두면 좋을 것 같다.

<html>
  <body>
    <h2>과제31 10진수에서 8진수로 바꾸기</h2>
    <script>
      let n = parseInt(prompt("10진수를 입력하세요.", 0));
      let i = 0;
      let a = [];
      while (n != 0) {
        a[i] = n % 8;
        i += 1;
        n = Math.floor(n / 8);
      }
      for (j = i - 1; j >= 0; --j) {
        document.write(`${a[j]} `);
      }
    </script>
  </body>
</html>

생각보다 코드로 작성할때는 하나하나 다 생각을 해줘야 하는 번거로움도 있지만

이로 인해 생각하는 범위가 좀 다양해지지 않을까 하는 생각이 든다.

 

 

과제 32. 8진수에서 10진수로 바꾸기

8진수에서 10진수 결과물

다음은 과제31에서 한 것을 역순으로 해보는 방법이다.

 

8진수에서 10진수로 바꾸기 코드

수학은 규칙이 있으니 규칙을 찾으면 쉽게 할 수 있다.

(하지만 실제로는 규칙을 알아도 이 것을 어떻게 만들어야 할지도 어려울 수 있으니 천천히 생각한다.)

<html>
  <head> </head>
  <body>
    <h2>과제32 8진수에서 10진수로 바꾸기</h2>
    <script>
      let b = [3, 4, 5, 7, 4]; // 임의의 8진수 배열을 넣기
      let n = 0;
      for (var i = 0; i <= 4; i++) {
        n = n + b[i] * Math.pow(8, 4 - i);
      }
      document.write(n);
    </script>
  </body>
</html>

여기서는 임의의 배열 b를 받아둔 상태에서 역순으로 곱해주는 방법을 적용해보았다.

Math.pow는 거듭제곱을 할 때 쓰는 방법이다.

(이러한 숫자관련 코드는 어디서 쓸 수 있을까..?? 토이플젝에 활용하고 싶어도 아직은 잘 모르겠다.)

 

 

 

생각보다 처음 코딩테스트를 내가 우습게 본 것이 매우 한심하게 느껴졌다.

그냥 머리 조금만 굴려보면 되겠지라는 생각으로 시도해보았다가, 참패를 느꼈었다.

그래도 다행인건 지인 추천을 통해 차근차근 단계를 밟고 하다 보니 생각보다 어려움을 조금을 덜 수 있었다.

 

순서도로 배우는 Java Script
국내도서
저자 : 김종훈
출판 : 다올미디어 2017.01.05
상세보기

 

앞으로 점점 더 난이도 있는 코드가 나올텐데 걱정 반 기대 반으로 오늘도 마무리한다.

728x90
반응형
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함