🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42746# 💡 접근법주어진 숫자 리스트를 이어붙여 만들 수 있는 모든 경우의 수를 탐색하면 시간 초과가 발생한다. 따라서 문자열 정렬을 활용해 가장 큰 수를 만들어야 한다. 문자열 정렬의 특성- 문자열 정렬은 숫자의 크기나 자릿수와 상관없이 문자 순서대로 사전식 정렬된다.- 문자열의 길이가 다를 때, 더 짧은 문자열은 사전식 정렬에서 먼저 온다. ex) "1"과 "10"을 비교하면, "1"이 "10"의 부분 문자열이므로 "1"이 "10"보다 앞에 정렬된다. 올바른 정렬을 수행하기 위해 자릿수를 맞춰서 비교해야 한다.문자열 정렬은 사전식 정렬로 수행되므로, 이는 [1, 10] ..
정렬
🗂️ 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근법 numbers 리스트 내 값들의 자릿수를 3자리로 맞춘다. 자릿수를 맞출 때 부족한 자릿수만큼 첫 번째 자리에 해당하는 수로 채운다. 즉 numbers=[3, 30, 34, 5, 9] → numbers=[333, 303, 343, 555, 999]가 된다. 이를 정렬하면 numbers = [999, 555, 343, 333, 303]이다. 이것의 원래 값을 이어붙여서 ..

📚 문제 링크: https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 접근법 계수 정렬 알고리즘을 이용하여 구현하였다. 계수 정렬이란? 각 원소들 간의 비교 없이, 크기를 기준으로 개수를 세어 정렬하는 방법이다. 💻 코드 1) 전체 코드 import sys N = int(sys.stdin.readline()) count = [0] * 10001 for _ in range(N): count[int(sys.stdin.readline())] += 1 for i, c in..

📚 문제 링크: https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 💡 접근법 정렬된 리스트에서 적절한 삽입 위치를 찾아 현재값을 삽입하는 삽입 정렬 알고리즘을 이용하여 구현하였다. 삽입 정렬이란? 이미 정렬된 데이터 범위에 정렬되지 않은 데이터를 적절한 위치에 삽입시켜 정렬하는 방법이다. 💻 코드 1) 전체 코드 import sys N = int(sys.stdin.readline()) num_list = list(map(int, sys.stdin.readline().split..

📚 문제 링크: https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 접근법 정렬할 리스트에서 최댓값을 찾은 뒤 현재값과 swap하는 선택 정렬 알고리즘을 이용하여 구현하였다. 선택 정렬이란? 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법이다. 💻 코드 1) 전체 코드 import sys nums = sys.stdin.readline().strip() num_list = [] for n in nums: num_list.append(int(n)) for i, n in enumerate(num_li..