전체 글(82)
-
백준, 나이순 정렬, 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 -
백준,부분 수열의 합,1182
[유형]백트래킹 [문제링크]https://www.acmicpc.net/problem/1182 [요약]N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. [문제풀이]백트래킹 문제로 ans를 출력하면 다음과 같다.import sysfrom itertools import permutationsdef input(): return sys.stdin.readline().rstrip()def dfs(start): global cnt if sum(ans) == s and len(ans) >0: cnt+=1 for i in range(start,n): ans.append..
2024.08.28 -
백준, 모든 순열, 10974
[유형]완전 탐색 [문제링크]https://www.acmicpc.net/problem/10974 [요약]N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. [문제풀이]itertools의 permutations를 사용한다.import sysfrom itertools import permutationsdef input(): return sys.stdin.readline().rstrip()n = int(input())result = list(permutations([i for i in range(1,n+1)],n))for r in result: print(*r)
2024.08.28 -
백준,N과 M (12),15666
[유형]백트래킹 [문제링크]https://www.acmicpc.net/problem/15666 [요약]N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. [문제풀이]import sysdef input(): return sys.stdin.readline().rstrip()def dfs(start,lst): # 종료조건 if len(lst) == M: ans.add(tu..
2024.08.27 -
백준,N과 M (11),15665
[유형]백트래킹 [문제링크]https://www.acmicpc.net/problem/15665 [요약]N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. [문제풀이]import sysdef input(): return sys.stdin.readline().rstrip()def dfs(lst): # 종료조건 if len(lst) == M: ans.add(tuple(lst)) return ..
2024.08.27