[항해99 2기] TIL 9일차

Song·2021년 6월 15일
0

회고록

목록 보기
39/47
post-thumbnail

Today I Learned 9일차

  1. 에라스토테네스의 체 이용
  2. 파이썬 Input 값 받는 다양한 방법
  3. 느낀점

1. 에라스토테네스의 체 이용

소수를 찾는 방법 중 가장 효율적인 방법으로 유명한 에라스토테네스 체를 알게되었다.

코드는 아래와 같다.

def sieve(max_num, min_num):
    primes = [True] * max_num        # 주어진 숫자만큼 배열 생성 (우선은 임의로 True (=소수)로 저장)

    m = int(max_num ** 0.5)  # n의 제곱근를 이용하여 작은 수들만으로도 소수을 판별
    for i in range(2, m + 1): # 1과 2는 이미 소수이므로 3부터 주어진 숫자까지 소수 판별 시작
        if primes[i]:
            for j in range(i + i, max_num, i):  # i의 배수가 되는 값들은 False로 변경
                primes[j] = False
    return [i for i in range(min_num + 1, max_num) if primes[i] == True]    #소수들 중 매개변수로 전달한 max_num과 min_num 사이만 반환

주어진 값만큼 소수를 나타내는 True값으로 배열을 생성하고
2,3,5,7을 제외한 2,3,5,7의 배수들을 False값을 전환하여 나중에 True로 남아있는 소수만 반환해주는 알고리즘이다.

2. 파이썬 Input 값 받는 다양한 방법

백준을 시작하며 파이썬으로 다양한 Input값을 받는 방법을 배웠다.

  • a,b = map(int, input().split())
    한줄로 입력받은 두개의 값을 공백을 기준으로 구분후 int형으로 변환해줌

  • input().split()
    한줄을 입력은 문자열을 공백으로 구분 후 list로 반환

  • map(int, input().split())
    한줄을 입력받은 문자열을 공백으로 구분하여 나눈 후 모든 원소들을 int 형으로 바꾼 list를 반환

  • sys.stdin.readline()
    개행문자(줄 바꿈 문자)를 공백없이 입력받을 수 있음
    보통 오른쪽이나 왼쪽에 공백이 발생하는데 이럴 경우 .rstrip() 이나 .lstrip() 사용 가능

  • 만약 input 개수와 상관없이 계속 데이터를 입력받고 싶다면 while를 사용할 수 있음
    하지만, break 조건이 항상 같이 있어야함

3. 느낀점

오늘 알고리즘 스터디 모임을 새로 시작했다. 다행히 좋은 팀원분들을 만난 것 같다.
스터디를 진행하는 동안 알고리즘 마라톤을 안전히 완수할 수 있게 서로 부족한 부분을 채워주며 탄탄한 코딩 속근육을 기를 수 있으면 좋겠다.

아무래도 알고리즘 자체가 난이도도 높고 익숙하지않다보니 집중하기 어려운거 같다.
그래서 이번주는 procrastination 잦아졌는데.. 다시 마음잡고 공부에 물두할 수 있으면 좋겠다.

profile
Learn From Yesterday, Live Today, Hope for Tomorrow

0개의 댓글