본문 바로가기

정렬

(10)
줄 세우기 [백준 11536] 이름을 입력 받아서 배열에 추가한다. 이후에 배열을 정렬해보고 정렬 전의 배열과 비교해본다.  https://www.acmicpc.net/problem/11536n= int(input())strings = []for _ in range(n): name =str(input().rstrip()) strings.append(name) newstring = strings.copy() strings.sort()if newstring == strings : print('INCREASING')elif newstring[::-1]==strings : print('DECREASING')else : print('NEITHER')# print(newstring)
좋은 구간[백준 1059] https://www.acmicpc.net/problem/1059  단순 계산에 가까운 문제이다. # 입력 처리L = int(input())S = list(map(int, input().split()))n = int(input())# 집합 S를 정렬합니다.if n in S : print(0) exit()S.sort()# n보다 작은 가장 큰 값을 찾습니다.left = 0for num in S: if num n: right = num break# 구간의 경계 설정A_start = leftB_end = right ans = 0 ans += n-A_start-1ans += B_end-n-1ans+= (n-A_start-1)*(B_end-n-1)# 결과 출력print(..
수학숙제 (백준2870) https://www.acmicpc.net/problem/2870 2870번: 수학숙제 종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차 www.acmicpc.net 영어 소문자와 숫자가 섞여있는 문자열에서 숫자들만 뽑아내서 새로운 배열을 만들고 정렬하면 된다. 해당코드는 정규식을 사용한 알고리즘이다. \d+는 정규식에서 숫자들을 지칭하는 메타문자이다. import re n =int(input()) def extract_numbers(s): # 문자열 s에서 숫자만 찾아 리스트로 반환 numbers = re.findall(r'\d+', s) return numbers..
아시아 정보올림피아드(백준 2535) https://www.acmicpc.net/problem/2535 2535번: 아시아 정보올림피아드 첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사 www.acmicpc.net 1번 2번 국가가 같은 겨우에 이와 다른 국가의 참가자를 찾는 경우만 잘 처리하면 된다. n =int(input()) arr=[] for i in range(n): a,b,c = map(int, input().split()) arr.append((a,b,c)) arr.sort(key=lambda x :-x[2]) firstcon,secondcon=arr[0][0], arr[..
좋다 (백준 1253) https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 매번 배열의 숫자를 보고 나머지의 숫자 2개를 더해 만들 수 있는 지 확인하면 된다. 포인터 2개를 써서 처리하면 더 빠르게 가능하다. n =int(input()) arr =list(map(int, input().split())) arr.sort() cnt = 0 def find(arr,target): s,e =0,len(arr)-1 while starget: e -=1 else : s+=1 return 0 for i in ..
단어순서 뒤집기(백준 12605) https://www.acmicpc.net/problem/12605 12605번: 단어순서 뒤집기 스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 www.acmicpc.net 문자열을 받가서 공백을 기준으로 자르고 다시 뒤에서부터 출력하면 된다. n = int(input()) # 사용자로부터 입력받은 숫자 n for i in range(n): string = input().rstrip() # 문자열 입력받기 및 오른쪽 공백 제거 arr = string.split(' ') # 공백을 기준으로 문자열을 분리하여 리스트 생성 print(f"Case #{i+1}: {' '...
두 용액(백준 2470) https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 0을 기준으로 두 수의 합이 큰지 작은 지에 따라 인덱스를 조정해주면 된다. n =int(input()) arr =list(map(int ,input().split())) arr.sort() s,e = 0,len(arr)-1 ans= 999999999999999 if n==2 : print(arr[0],arr[1]) exit() find =[] while s
시리얼 번호(백준 1431) https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 문제의 조건에 맞게 정렬을 람다 함수를 활용하여 해준다. n = int(input()) def num_sum(string): ans =0 for i in range(len(string)): if ord(string[i])>=65:continue else :ans+= int(string[i]) return ans arr = [] for i in range(n): string =input().r..