deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 팩토리얼
  • SQL
  • 데이터분석가
  • 소인수분해
  • 계차수열
  • 마이데이터
  • matplotlib
  • 계산기
  • 릿코드
  • 데이터사이언티스트
  • 미니콘다
  • 제로베이스
  • 파이썬
  • 함수
  • 빅데이터
  • 부트캠프
  • 통계
  • 모듈
  • pandas
  • 데이터엔지니어
  • 등비수열
  • 코딩
  • 최소공배수
  • BMI
  • 등차수열
  • 기초수학
  • 네카라쿠배
  • 군수열
  • 데이터분석
  • 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

스터디

[스터디 후기] 3주차. 백준 문제 및 조별 과제 토의

2022. 6. 27. 00:49

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
    '스터디' 카테고리의 다른 글
    • [스터디 후기] 5주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 4주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 1. 코딩테스트_1 & EDA 과제_2
    • [스터디 후기] 0. 아이스 브레이킹
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바