Computer Science/자료구조

[6.26] Level 1 연습문제 모음 4(40/100~42/100)

토마토. 2021. 6. 26. 19:49

1. 2016년

코딩테스트 연습 - 2016년 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

def solution(a, b):
    answer = ''
    day = ['THU','FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']
    dates = [(1, 31), (2, 29), (3, 31), (4, 30), (5, 31), (6, 30), (7, 31), (8, 31), (9, 30), (10, 31), (11, 30), (12, 31)]
    # Q1. 누적된 날짜가 며칠인가? 
    # A1. 셀프 계산
    # A2. while문으로 계산
    i = 0
    accum = 0
    while True:
      if i == a-1:
        print(i)
        accum += b
        break
      else:
        accum += dates[i][1]
        print(accum)
        i += 1
    answer = day[(accum % 7)]
    # Q2. 나머지 연산으로 계산하면, 어떤 인덱스가 나오는가? 
    # 금요일이 index 0으로 친다. 누적 날짜 % 7 - 1로 day에 대입하여 출력
    return answer

2. 소수 찾기

코딩테스트 연습 - 소수 찾기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 소수 찾기

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상

programmers.co.kr

def prime(n):
  a = [False,False] + [True]*(n-1)
  primes=[]

  for i in range(2,n+1):
    if a[i]:
      primes.append(i)
      for j in range(2*i, n+1, i):
          a[j] = False
  return len(primes)

def solution(n):
  return (prime(n))

3. 3진법 뒤집기

코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr

def solution(n):
    ternary = []
    answer = 0
    #3진수 변환
    while True:
      if n < 3:
        ternary.append(f'{n}')
        break
      else:
        ternary.append(f'{n%3}')
        n //= 3
    for i in range(0, len(ternary)):
      a = int(ternary[i])
      a *= 3 ** (len(ternary) - 1 -i)
      answer += a
    return answer