본문 바로가기

분류 전체보기39

[백준] 1427번 소트인사이트 - Python(1편) 문제 링크: https://www.acmicpc.net/problem/1427 문제를 확인해 보니 수가 주어지면 내림차순으로 정리를 하라고 합니다.저번 글에 작성했었던 선택 정렬 알고리즘을 이용해서 풀어보겠습니다.2024.12.09 - [코딩 테스트] - 선택 정렬(Selection Sort)이란 무엇인가? 선택 정렬(Selection Sort)이란 무엇인가?선택 정렬은 데이터를 정렬하기 위한 간단하고 직관적인 알고리즘이며, 입력 배열을 정렬된 부분과 정렬되지 않은 부분의 두 부분으로 나누어 작동합니다.  작동 방식을 알아보겠습니다.최솟arctis7p.tistory.com 다음은 전체 코드입니다.import sysinput = sys.stdin.readlinenum = input().strip()data.. 2024. 12. 9.
선택 정렬(Selection Sort)이란 무엇인가? 선택 정렬은 데이터를 정렬하기 위한 간단하고 직관적인 알고리즘이며, 입력 배열을 정렬된 부분과 정렬되지 않은 부분의 두 부분으로 나누어 작동합니다.  작동 방식을 알아보겠습니다.최솟값(또는 최댓값) 찾기정렬되지 않은 부분에서 가장 작은(혹은 가장 큰) 요소를 찾습니다.교체찾은 최솟값(혹은 최댓값)을 정렬되지 않은 부분의 첫 번째 요소와 교체합니다.경계 이동정렬된 부분의 경계를 오른쪽으로 한 위치 이동합니다.반복배열이 완전히 정렬될 때까지 1~3단계를 반복합니다. 예를 들어, 배열 [7, 5, 6, 4, 9, 2]를 오름차순으로 정렬하는 경우:첫 번째 반복: 최솟값 2를 찾고, 첫 번째 요소 7과 교체합니다. → [2, 5, 6, 4, 9, 7]두 번째 반복: 최소값 4를 찾고, 두 번째 요소 5와 교체합.. 2024. 12. 9.
[백준] 11399번 ATM - Python(2편) 백준 문제 연결 링크입니다.https://www.acmicpc.net/problem/11399  2024.12.09 - [코딩 테스트] - [백준] 11399번 ATM - Python(1편) [백준] 11399번 ATM - Python(1편)https://www.acmicpc.net/problem/11399이 문제는 주어지는 데이터를 오름차순으로 정렬한 후, 정렬된 리스트를 순회하면서 각 사람의 대기 시간을 더해나가면 되는 쉬운 문제입니다. 아마 대부분의 사람arctis7p.tistory.com앞의 글이랑 이어지는 글입니다. 1편에서는 주어지는 데이터를 오름차순으로 정렬한 후, 정렬된 리스트를 순회하면서 각 사람의 대기 시간을 더해나갔습니다만, 제가 이 문제를 처음 풀 당시에는 이렇게 풀지 않았고 정렬을.. 2024. 12. 9.
[백준] 11399번 ATM - Python(1편) https://www.acmicpc.net/problem/11399이 문제는 주어지는 데이터를 오름차순으로 정렬한 후, 정렬된 리스트를 순회하면서 각 사람의 대기 시간을 더해나가면 되는 쉬운 문제입니다. 아마 대부분의 사람들이 이런 방식으로 문제를 풀지 않았을까 싶습니다. 다른 풀이 방법들은 다음 글에서 설명하도록 하고, 코드를 확인해 보겠습니다. N = int(input())data = list(map(int, input().split()))data.sort()total_time = 0waiting_time = 0for time in data: waiting_time += time # 현재 사람의 대기 시간을 더함 total_time += waiting_time # 총 대기 시간에 추가p.. 2024. 12. 9.
[백준] 2750번 수 정렬하기 - Python(2편) 저번 글에서 버블 정렬을 이용한 백준 2750번 풀이를 보였었습니다. 2024.12.08 - [코딩 테스트] - [백준] 2750번 수 정렬하기 - Python(1편) [백준] 2750번 수 정렬하기 - Python(1편)문제를 확인해 봅시다. N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하라고 합니다.https://www.acmicpc.net/problem/2750    푸는 방법이 여러 가지가 나올 수 있는 문제입니다arctis7p.tistory.com 이번에는 리스트의 메서드인 sort()를 사용한 풀이를 해보겠습니다.아래는 백준 2750번 문제입니다.https://www.acmicpc.net/problem/2750 "sort() 메서드를 이용한 풀이" 다음은 전체 코드입니다.. 2024. 12. 9.
[백준] 2750번 수 정렬하기 - Python(1편) 문제를 확인해 봅시다. N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하라고 합니다.https://www.acmicpc.net/problem/2750   푸는 방법이 여러 가지가 나올 수 있는 문제입니다. 일단 버블 정렬을 이용해 오름차순으로 정렬한 후 출력하는 코드를 작성해 보겠습니다. 아래는 버블 정렬에 관한 설명 글입니다.2024.12.08 - [코딩 테스트] - 버블 정렬(Bubble_Sort)이란 무엇인가? 버블 정렬(Bubble_Sort)이란 무엇인가?버블 정렬(Bubble SortSort)은 간단하지만 효율성이 떨어지는 정렬 알고리즘입니다. 버블 정렬을 한 마디로 정의하자면 “맨 뒤부터 정리하는 정렬” 혹은 “옆과 비교하여 왼쪽이 더 크면 좌우 교arctis7p.tist.. 2024. 12. 8.
sys.stdin.readline()으로 입력 속도 높이기: 개행문자 처리부터 주의사항까지 코딩 테스트 문제를 풀다 보면import sysinput = sys.stdin.readline이런 코드를 작성해서 input을 재정의 하는 일이 종종 발생합니다.  왜 input을 다시 정의하는 걸까요?사실 이런 코드는 알고리즘 문제 풀이에서 시간 초과를 피하기 위해 자주 사용됩니다. sys.stdin.readline()이 input() 함수보다 훨씬 빠르며 대량의 데이터를 입력받을 때 특히 유용하기 때문입니다.    하지만, 주의사항도 있습니다. input() 함수를 재정의 하는 만큼 달라지는 점이 존재하는데요. sys.stdin.readline()은 사용자가 입력한 그대로의 데이터를 읽는 반면, input() 함수는 자동으로 개행문자를 제거합니다.    여기서 개행문자란 텍스트에서 줄 바꿈을 나타내는.. 2024. 12. 8.
최적화된 버블 정렬(Optimized Bubble Sort)이란 무엇인가? 이전 글에서 버블 정렬에 대해 알아보았습니다. 2024.12.08 - [코딩 테스트] - 버블 정렬(Bubble_Sort)이란 무엇인가? 버블 정렬(Bubble_Sort)이란 무엇인가?버블 정렬(Bubble SortSort)은 간단하지만 효율성이 떨어지는 정렬 알고리즘입니다. 버블 정렬을 한 마디로 정의하자면 “맨 뒤부터 정리하는 정렬” 혹은 “옆과 비교하여 왼쪽이 더 크면 좌우 교arctis7p.tistory.com 여기서 한 단계 더 들어가서 최적화된 버블 정렬에 대해 알아보기 전에 버블 정렬을 다시 생각해 보겠습니다. 버블 정렬 코드는 모든 패스에서 전체 배열을 비교하여 정렬합니다. 즉, 이미 정렬된 부분도 다시 비교한다는 단점이 있습니다.   하지만 최적화된 버블 정렬은 이미 정렬된 부분을 다시 .. 2024. 12. 8.
버블 정렬(Bubble_Sort)이란 무엇인가? 버블 정렬(Bubble SortSort)은 간단하지만 효율성이 떨어지는 정렬 알고리즘입니다. 버블 정렬을 한 마디로 정의하자면 “맨 뒤부터 정리하는 정렬” 혹은 “옆과 비교하여 왼쪽이 더 크면 좌우 교환하는 정렬”이라고 할 수 있겠습니다.  버블 정렬은 인접한 두 요소를 비교하여 그 순서가 맞지 않으면 교체하는 방식으로 작동합니다.   첫 번째 반복 배열의 첫 번째 요소와 두 번째 요소를 비교합니다. 첫 번째 요소가 두 번째 요소보다 크면, 두 요소를 교체합니다. 이 과정을 배열의 마지막 요소까지 반복합니다. 배열의 맨 마지막 요소는 가장 큰 요소가 됩니다.남은 반복 위의 과정을 반복합니다. 예를 들어, 두 번째 반복에서는 두 번째로 큰 요소가 배열의 두 번쨰 위치에 배치됩니다.  이러한 과정을 배열의.. 2024. 12. 8.