본문 바로가기

Programming/Python19

18. 보물, 나이순 정렬, 국영수, 문자열 내 마음대로 정렬하기, 파일명 정렬 보물 파이썬에서 내림차순 정렬을 하려면? : reverse=True 옵션을 추가하면 됨my_list = [3, 1, 4, 1, 5, 9, 2]sorted_list_desc = sorted(my_list, reverse=True)print(sorted_list_desc) # 출력: [9, 5, 4, 3, 2, 1, 1] 최종코드N = int(input())A = list(map(int, input().split()))B = list(map(int, input().split()))sorted_A = sorted(A)sorted_B = sorted(B, reverse=True)S = [sorted_A[i] * sorted_B[i] for i in range(N)]print(sum(S)) 나이순 정렬 .. 2025. 9. 22.
17. 정렬, 비교정렬, 기수정렬, 카운팅정렬 정렬 문제 정렬 문제는 무엇을 위해?섞여 있는 데이터(리스트)를 어떤 기준(키)에 따라 오름차순/내림차순으로 다시 배열하는 것 : 예를 들어 입력이 빨간색, 파란색, 초록색 등이라고 할 때 정렬할 기준이 무엇이 될까?임 : 즉, 원소들의 모음 : 학생 성적 리스트, 파일 목록, 날짜들… : 이 입력이 될 수 있음 : 반대로 출력은? : 지정한 기준대로 순서가 정리된 같은 원소들의 모음 그렇다면 비교만 되면 정렬 가능일까?그냥 서로 비교할 수 있다고 해서 곧바로 ‘정렬 가능한 데이터’가 되는 건 아님 : 그럼? : 최소, 최대가 존재해야함 : 즉, 제일 작은 것/큰 것이 잡혀야 정렬이 의미가 있어지고 끝까지 수렴 : 일관된 순서(정렬 기준)가 성립해야 함 : 정렬 알고리즘은 원소들 사이에 "모순 없는 전.. 2025. 9. 21.
16. (딕셔너리, 집합) 완주하지 못한 선수, 영어 끝말잇기, 캐시, 수강신청, 사이클단어 완주하지 못한 선수 해당 문제는 "완주하지 못한"이 중점 : 즉, "참가자" 명단을 중심으로 생각 : 참가자 명단 - 완주자 명단을 모두 수행하고 : 참가자 명단에서 총정리하여 남는 사람을 추출하면 될 것def solution(participant, completion): participant_dict = {} for i in participant: if i in participant_dict: participant_dict[i] += 1 else: participant_dict[i] = 1 for j in completion: participant_dict[j] -= 1 if participant.. 2025. 9. 16.
15. (딕셔너리, 집합) 숫자카드 2, 서울에서 김서방 찾기, 베스트셀러, 놀라운 문자열 숫자카드 2 N = int(input())cards = list(map(int, input().split()))M = int(input())queries = list(map(int, input().split()))new_queries = []for i in range(M): new_queries.append(cards.count(queries[i]))print(new_queries)하지만 위와같이 하면 시간 초과가 걸림 : count()는 리스트 전체를 처음부터 끝가지 세면서 검사하기 때문에 O(N) : 근데 그걸 M번 반복하니까 전체 복잡도는 O(NxM) : 문제에서 M, N은 50만이 최대인데 파이썬은 보통 1초에 10^7(1억)정도 연산 가능 : N × M = 500,000 × 500,000.. 2025. 9. 14.
14. 해시, 해시테이블 해시 정의, 개념해시 함수(hash function) : 임의 길이의 키(key)를 고정된 범위의 정수로 매핑하는 함수 h: Key → {0, 1, …, m-1} : 즉, 긴 정보(예: 문자열, 학생이름, 주민번호 같은 키)를 짧은 숫자 하나로 바꿔주는 함수 : 이 숫자를 보통 0 ~ (m-1) 범위로 만든 다음 그 숫자를 주로 배열의 인덱스로 사용하여 칸 번호처럼 씀 : 특히 카운팅, 중복 체크, 빠른 탐색에 쓰임 이렇게 하면 데이터를 빠르게 저장하거나 검색할 때 유용함 : 키를 그대로 비교하는 대신 “번호표”로 먼저 자리부터 찾는 느낌임 : 즉, 키들을 가능한 한 균등하게 분포시켜, 해시테이블에서 탐색/삽입/삭제를 평균 O(1)로 만들기 위함특징입력이 길어도 출력은 보통 고정 크기 정수(예: 32비.. 2025. 9. 13.
13. 괄호, 스택 수열, 요세푸스 문제, 쇠막대기, AC, 화학식량 괄호 class Stack: def __init__(self): self.stack = [] def push(self, data): self.stack.append(data) def pop(self): if not self.stack: return False return self.stack.pop()s = input()parentheses = { '(' : ')', '{' : '}', '[' : ']' }ss = Stack()valid = Truefor ch in s: # 파이썬에서 in 연산자는 딕셔너리에 대해 기본적으.. 2025. 9. 7.