1. 스터디 범위
1) 범위
백준 브루트 포스 5. 영화감독 숌 ~ 정렬 단계
2. 스터디 내용
1) 1436. 영화 감독 숌
크게 어렵지 않았고, 풀이과정도 모두 비슷했다.
n = int(input("n="))
cnt = 0
n_num = 666
while True:
if '666' in str(n_num): #1 '666'이 있을 때만
cnt += 1 #2 카운트를 1 추가
if cnt == n: #3 카운트랑 n번째 수가 같다면
print(n_num) #4 nth를 출력
break
n_num += 1 #5 '666' 나올때까지 더함
2) 2750. 수 정렬하기
제약사항이 적어 크게 어렵지 않았다.
n = int(input())
nums = []
for i in range(n):
nums.append(int(input()))
nums_1 = sorted(nums)
for i in range(len(nums)):
print(nums_1[i])
3) 2751. 수 정렬하기 2
2750과 달리 시간 복잡도가 O(nlogn)인 정렬 알고리즘으로 풀 수 있다.
input 매서드로 입력값을 받는 것보다 sys 모듈을 이용하여 입력값을 받으면 시간을 크게 단축 시킬 수 있다.
전의 코드와 거의 같지만, 입력값을 받는 방법만 다르게 해도 효율이 크게 오를 수 있다.
시간 복잡도에 대해 토의해 볼 수 있어서 좋았다.
import sys
n = int(input())
num = []
for i in range(n):
num.append(int(sys.stdin.readline()))
num.sort()
for i in num:
print(i)
# 동기 분의 시간 복잡도 글
개발도상기(記) - 시간 복잡도
코딩 연습문제를 풀다보면 파이참 환경에서는 출력이 가능하나,제출 시 시간초과로 인해 오답처리되는 경우가 빈번하다.같은 결과를 반환하는 코드도 구성에 따라서 걸리는 시간이 다르게 나
velog.io
4) 10989. 수 정렬하기
시간과 메모리가 크게 줄었기에 이전과 같은 방법으로는 해결하기 어렵다.
따라서 범위를 설정해줘야 한다.
import sys
n = int(sys.stdin.readline())
nums = [0 for _ in range(10001)] # 범위 설정
for _ in range(n):
nums[int(sys.stdin.readline())] += 1
for i, num in enumerate(nums):
for _ in range(num):
print(i)
5) 통계학
산술평균, 중앙값, 최빈값, 범위를 구하는 문제였다.
나머지는 크게 다르지 않았으나, 최빈값에서 다양한 방법이 나왔다.
import sys
from collections import Counter
n = int(sys.stdin.readline())
nums = []
for i in range(n):
nums.append(int(sys.stdin.readline()))
# 산술평균 - 다 더해서 / n 후 반올림
print(round(sum(nums)/n))
# 중앙값
nums.sort() #오름차순 후 중앙값
print(nums[n//2])
# 최빈값
cnt_nums = Counter(nums).most_common() # 카운트해서 딕셔너리 형태로 반환
if len(cnt_nums) > 1 and cnt_nums[0][1]==cnt_nums[1][1]: #최빈값 2개 이상일 경우 2번째
print(cnt_nums[1][0])
else:
print(cnt_nums[0][0])
# 범위 - 최댓값-최솟값
print(max(nums)-min(nums))
'스터디' 카테고리의 다른 글
[스터디 후기] 6주차. 백준 문제 및 조별 과제 토의 (0) | 2022.07.19 |
---|---|
[스터디 후기] 5주차. 백준 문제 및 조별 과제 토의 (0) | 2022.07.11 |
[스터디 후기] 4주차. 백준 문제 및 조별 과제 토의 (0) | 2022.07.04 |
[스터디 후기] 1. 코딩테스트_1 & EDA 과제_2 (0) | 2022.06.19 |
[스터디 후기] 0. 아이스 브레이킹 (0) | 2022.06.12 |