ETC/Algorithm(58)
-
백준, 듣보잡, 1764
[유형]이분탐색 [문제링크]https://www.acmicpc.net/problem/1764 [요약]김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. [문제풀이]듣도 못한 사람의 명단과 보도 못한 사람의 명단을 set으로 받아, 합집합을 사용해서 듣도 보도 못한 사람의 명단을 구한다. import sysdef input(): return sys.stdin.readline().rstrip()list_n = set()list_m = set()n,m = map(int,input().split())for _ in range(n): list_n.add(input())for _ in range(m): list_m...
2024.09.04 -
백준, 수 찾기, 1920
[유형]이분탐색 [문제링크]https://www.acmicpc.net/problem/1920 [요약]첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. [문제풀이]이분탐색이지만, set을 사용해서 문제를 해결할 수 있다.A를 set으로 만들어 탐색을 진행한다. import sysdef input(): return sys.stdin.readline().rstrip()N = int(input())list_N = set(map(int,input().split()))M = in..
2024.09.04 -
프로그래머스, [3차] 파일명 정렬, 17686
[유형]정렬 [문제링크]https://school.programmers.co.kr/learn/courses/30/lessons/17686?language=python3 [요약]파일명을 세 부분으로 나눈 후, 파일명을 정렬한다.파일명은 우선 HEAD 부분을 기준으로 사전 순으로 정렬한다. 이때, 문자열 비교 시 대소문자 구분을 하지 않는다. MUZI와 muzi, MuZi는 정렬 시에 같은 순서로 취급된다.파일명의 HEAD 부분이 대소문자 차이 외에는 같을 경우, NUMBER의 숫자 순으로 정렬한다. 9 두 파일의 HEAD 부분과, NUMBER의 숫자도 같을 경우, 원래 입력에 주어진 순서를 유지한다. MUZI01.zip과 muzi1.png가 입력으로 들어오면, 정렬 후에도 입력 시 주어진 두 파일의 순서가..
2024.09.03 -
백준, 좌표 정렬하기2, 11651
[유형]정렬 [문제링크]https://www.acmicpc.net/problem/11651 [요약]2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. [문제풀이]import sysdef input(): return sys.stdin.readline().rstrip()list = []N = int(input())for _ in range(N): list.append(input().split())list.sort(key=lambda x: (int(x[1]),int(x[0])))for x,y in list: print(x,y)
2024.09.03 -
백준, 나이순 정렬, 10814
[유형]정렬 [문제링크]https://www.acmicpc.net/problem/10814 [요약]온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. [문제풀이]import sysdef input(): return sys.stdin.readline().rstrip()age_list = []N = int(input())for _ in range(N): age_list.append(input().split())age_list.sort(key=lambda x: int(x[0]))for age, name in age_list: print(age,name)
2024.09.03 -
백준, 스타트와 링크, 14889
[유형]백트래킹, 조합 [문제링크]https://www.acmicpc.net/problem/14889 [요약]축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다.능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 팀의 능력치는 팀에 속한 모든 쌍의 능력치 Sij의 합이다. Sij는 Sji와 다를 수도 있으며, i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치는 Sij와 Sji이다.첫째 줄에 스타트 팀과 링크 팀의 능력치의 차이의 최솟값을 출력한다. [문제풀이]가장 먼저 조합을 사용해서 문제를 해결할 수 있다. import sysfrom itertools i..
2024.08.30