[백준 2751번 문제, 파이썬3] 수 정렬하기 2

2023. 5. 19. 00:39·정리 전 게시글/공부 관련

문제

https://www.acmicpc.net/problem/2751

 

2751번: 수 정렬하기 2

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.


코드

일반적인 파이썬 정렬 코드이다

import sys
count = int(sys.stdin.readline())
my_list = [int(sys.stdin.readline()) for _ in range(count)]
for i in sorted(my_list):
    print(i)

해결

음.. 뭔가 이상하다

 

처음 맞췄던 방법은 출제자가 의도한 방법이 아닌것 같아서 병합정렬이랑 계수정렬을 사용해서 코드를 작성했는데

틀렸거나 시간초과 결과가 나온다... 이상하다 

 

병합정렬

import sys


def mergeSort(A, p: int, r: int):
    if p < r:
        q = (p + r) // 2
        mergeSort(A, p, q)
        mergeSort(A, q + 1, r)
        merge(A, p, q, r)


def merge(A, p: int, q: int, r: int):
    i = p
    j = q + 1
    t = 0
    tmp = [0 for i in range(len(A))]
    while i <= q and j <= r:
        if A[i] <= A[j]:
            tmp[t] = A[i]
            i += 1
        else:
            tmp[t] = A[j]
            j += 1
        t += 1
    while i <= q:
        tmp[t] = A[i]
        i += 1
        t += 1
    while j <= r:
        tmp[t] = A[j]
        j += 1
        t += 1
    i = p
    t = 0
    while i <= r:
        A[i] = tmp[t]
        i += 1
        t += 1


count = int(sys.stdin.readline())
my_list = [int(sys.stdin.readline()) for _ in range(count)]
mergeSort(my_list, 0, len(my_list) - 1)
for i in my_list:
    print(i)

 

계수정렬

import sys


# 계수 정렬
def counting_sort(A: list):
    k = max(A)
    c = [0 for _ in range(k + 1)]
    for j in range(len(A)):
        c[A[j]] += 1
    for i in range(1, k + 1):
        c[i] += c[i - 1]
    b = [0 for _ in range(len(A))]
    for j in range(len(A) - 1, -1, -1):
        b[c[A[j]] - 1] = A[j]
        c[A[j]] -= 1
    return b


count = int(sys.stdin.readline())
my_list = [int(sys.stdin.readline()) for _ in range(count)]
for i in counting_sort(my_list):
    print(i)

 

그런데 왜 다 틀렸다고 뜨는거지... 이유를 알수가 없구만


참고

링크

 

 

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

캡스톤 디자인 앱 만들기 My Walking Pet #0  (0) 2023.05.19
[백준 1654번 문제, 파이썬3] 랜선 자르기  (0) 2023.05.19
[백준 15829번 문제, 파이썬3] Hashing  (0) 2023.05.19
[백준 2869번 문제, 파이썬3] 달팽이는 올라가고 싶다  (1) 2023.05.18
안드로이드 틱택토 앱 게임 만들기 미니맥스 알고리즘 인공지능 #0  (0) 2023.05.18
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • 캡스톤 디자인 앱 만들기 My Walking Pet #0
  • [백준 1654번 문제, 파이썬3] 랜선 자르기
  • [백준 15829번 문제, 파이썬3] Hashing
  • [백준 2869번 문제, 파이썬3] 달팽이는 올라가고 싶다
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공개SW개발자대회
    티스토리스킨편집
    이것이자바다연습문제
    안드로이드
    티스토리반응형2스킨편집
    마인크래프트
    컨텍스트스위칭
    반복하지않는수
    티스토리HTML
    프로그래머스
    일본규슈공업대학교
    빅데이터공모전
    프로그래머스PCCE
    파이어베이스
    마크스크립트
    마인크래프트강화스크립트
    C++강좌
    c언어초보
    이것이자바다확인문제
    자바
    이것이자바다
    캡스톤디자인
    마인크래프트스크립트
    C언어강좌
    C언어
    백준
    스크롤바CSS
    파이썬
    마크
    콜라츠추측
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[백준 2751번 문제, 파이썬3] 수 정렬하기 2
상단으로

티스토리툴바