백준 문제풀이24 [백준] 10815번 숫자 카드 - Python(1편) 문제 코드: https://www.acmicpc.net/problem/10815 이 문제의 주요 특징과 해결 방법을 분석해 보겠습니다. 모르는 개념이거나 이해가 잘 되지 않는 경우 해당 텍스트의 하이퍼링크를 클릭하면 관련 설명 글로 넘어가실 수 있습니다. 문제 개요상근이가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 500,000)확인해야 할 숫자의 개수 M (1 ≤ M ≤ 500,000)각 숫자에 대해 상근이가 해당 카드를 가지고 있는지 확인문제 분석대용량 데이터 처리: N과 M의 최댓값이 500,000으로, 단순 반복문으로는 시간 초과가 발생할 수 있습니다.이진 탐색 적용: 정렬된 배열에서 특정 값을 빠르게 찾을 수 있는 이진 탐색 알고리즘이 적합합니다.(3편)집합의 해시 테이블을 기반으로 코.. 2024. 12. 10. [백준] 1764번 듣보잡 - Python 문제 링크: https://www.acmicpc.net/problem/1764 이 문제는 다음과 같이 요약할 수 있습니다. 문제 개요듣도 못한 사람의 명단과 보도 못한 사람의 명단이 주어짐듣도 보도 못한 사람(듣보잡)의 명단을 찾아 출력하는 프로그램 작성입력첫째 줄: 듣도 보도 못한 사람의 수 N, 보도 못한 사람의 수 M다음 N개 줄: 듣도 못한 사람의 이름그다음 N개 줄: 보도 못한 사람의 이름각 명단에 중복되는 이름은 없음출력듣보잡의 수듣보잡의 명단을 사전순으로 출력핵심 요구사항두 명단에서 공통으로 등장하는 이름을 찾아야 함결과를 사전순으로 정렬해야 함대량의 데이터를 처리해야 함(N, M이 최대 500,000) 이제 코드를 한 번 살펴보겠습니다. 아래는 전체 코드입니다.import sysinput .. 2024. 12. 10. [백준] 10816번 숫자 카드 2 - Python 문제 링크: https://www.acmicpc.net/problem/10816 머릿속으로 생각했던 것보다 어려웠던 문제였습니다. 아래는 전체 코드입니다.import sysinput = sys.stdin.readlineN = int(input())n_group = list(map(int, input().split()))M = int(input())m_group = list(map(int, input().split()))count_dict = {}for num in n_group: if num in count_dict: count_dict[num] += 1 else: count_dict[num] = 1result = []for i in m_group: count =.. 2024. 12. 10. [백준] 11651번 좌표 정렬하기2 - Python 문제 링크: https://www.acmicpc.net/problem/11651 이 문제는 2차원 평면 위의 점이 N개 주어졌을 때, 좌표를 Y좌표가 증가하는 순으로, 만약 Y좌표가 같으면 X좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 만들면 됩니다. 전에 풀었던 문제랑 거의 같습니다.2024.12.09 - [분류 전체보기] - [백준] 11650번 좌표 정렬하기 - Python [백준] 11650번 좌표 정렬하기 - Python문제 링크: https://www.acmicpc.net/problem/11650 좌표가 주어지면 x좌표를 기준으로 오름차순 정렬하고, 만약 x좌표가 같을 시 y좌표를 기준으로 오름차순 정렬하고 출력하는 문제입니다. 우선 이 문제arctis7p.tistory.com 일.. 2024. 12. 10. [백준] 1931번 회의실 배정 - Python 문제 링크: https://www.acmicpc.net/problem/1931 이 문제에서 필요한 아이디어는 그리디 알고리즘을 사용하여 최대한 많은 회의를 배정하는 것입니다. 핵심 아이디어종료 시간 기준 설정 회의를 종료 시간을 기준으로 정렬합니다. 이는 가장 빨리 끝나는 회의부터 고려하기 위함입니다. 종료 시간이 같을 경우, 시작 시간을 기준으로 추가 정렬합니다.겹치지 않는 회의 선택 현재 고려 중인 회의의 시작 시간이 이전에 선택된 회의의 종료 시간보다 크거나 같은 경우에만 해당 회의를 선택합니다.이 아이디어는 항상 현재 상황에서 최선의 선택을 한다는 그리디 알고리즘의 원칙을 따릅니다. 그럼 코드를 확인해 보겠습니다.import sysfrom typing import List, Tupleinput =.. 2024. 12. 10. [백준] 11650번 좌표 정렬하기 - Python 문제 링크: https://www.acmicpc.net/problem/11650 좌표가 주어지면 x좌표를 기준으로 오름차순 정렬하고, 만약 x좌표가 같을 시 y좌표를 기준으로 오름차순 정렬하고 출력하는 문제입니다. 우선 이 문제를 풀기 전에 Python 3.5부터 도입된 타입 힌팅이라는 기능을 사용해 보았습니다. 타입 힌팅에 관한 설명 글은 추후 작성하도록 하겠습니다. 코드를 확인해 보겠습니다.import sysfrom typing import List, Tupleinput = sys.stdin.readlineN: int = int(input())data: List[Tuple[int, int]] = [tuple(map(int, input().split())) for _ in range(N)]X_INDEX.. 2024. 12. 9. [백준] 1920번 수 찾기 - Python(2편) 문제 링크: https://www.acmicpc.net/problem/1920 [백준] 1920번 수 찾기 -Python(1편)이랑 이어지는 내용입니다.2024.12.09 - [코딩 테스트] - [백준] 1920번 수 찾기 - Python(1편) [백준] 1920번 수 찾기 - Python(1편)문제 링크: https://www.acmicpc.net/problem/1920 백준 1920 문제를 간략히 설명하자면 N개의 정수로 이루어진 수열 A에서 M개의 정수가 각각 존재하는지 확인하여, 존재하면 1, 존재하지 않으면 0을 출력하arctis7p.tistory.com 1편에서는 시간 초과로 인해 문제를 해결하지 못했었습니다.그럼 이 시간 초과를 해결하려면 어떻게 해야 할까요? 여러 방법이 있겠지만 제가 사용.. 2024. 12. 9. [백준] 1920번 수 찾기 - Python(1편) 문제 링크: https://www.acmicpc.net/problem/1920 백준 1920 문제를 간략히 설명하자면 N개의 정수로 이루어진 수열 A에서 M개의 정수가 각각 존재하는지 확인하여, 존재하면 1, 존재하지 않으면 0을 출력하는 프로그램을 작성하는 것입니다. 코드를 작성해서 제출했는데 시간 초과가 떴습니다. 1편에서는 왜 시간 초과가 뜨는지 한 번 알아보고, 2편에서 코드를 수정해 보겠습니다. 아래는 시간초과가 나온 코드입니다.import sysinput = sys.stdin.readlineN = int(input())treatment_group = list(map(int, input().split()))M = int(input())control_group = list(map(int, inpu.. 2024. 12. 9. [백준] 1427번 소트인사이드 - Python(2편) 문제 링크:https://www.acmicpc.net/problem/1427 1편이랑 이어지는 내용입니다.2024.12.09 - [코딩 테스트] - [백준] 1427번 소트인사이트 - Python(1편) 2편에서는 리스트 컴프리헨션과 내장 함수를 사용하여 더욱 간결하게 만들어 보겠습니다. 아래는 리스트 컴프리헨션과 sorted() 내장 함수를 사용한 코드입니다.import sysnum = sys.stdin.readline().strip()print("".join(sorted(num, reverse=True))) 이 코드를 한 번 확인해보겠습니다.입력받기import sysnum = sys.stdin.readline().strip() 'import sys': sys 모듈을 가져옵니다.'sys.stdin.r.. 2024. 12. 9. [백준] 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. 이전 1 2 3 다음