728x90
반응형

정렬 12

[파이썬] BOJ_3273(두 수의 합)

문제 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 해설 처음에는 밑의 주석처리 된 시간 초과 코드 처럼 풀면 쉽게 해결될 거라고 생각했다. 그치만 이중 반복문을 쓰면 시간복잡도가 O(n^2)이 되어 시간 초과가 난다. 이 문제는 투포인터 문제로 리스트의 가장 처음(0)과 가장 마지막(n-1)을 각각 포인터로 설정해 위치를 옮겨가면서 원하는 값을 구하면 된다. left 위치와 right ..

알고리즘/백준 2023.06.12

[파이썬] BOJ_11656(접미사 배열)

문제 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 해설 문자열을 앞에서부터 하나씩 제거해서 리스트에 넣어주면 된다. 코드 -파이썬 #백준 11656(접미사 배열) s = input() arr = [] while True: arr.append(s) s = s[1:] #문자열 첫 글자 제거 if len(s) == 0: break arr.sort() for i in arr: print(i)

카테고리 없음 2022.07.22

[파이썬] BOJ_11004(K번째 수)

문제 https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 해설 숫자를 리스트로 받아 정렬한 후 리스트의 인덱스는 0부터 시작하므로 k-1번째 숫자를 출력하면 된다. 코드 -파이썬 #백준 11004(K번째 수) n, k = map(int, input().split()) num = list(map(int, input().split())) num.sort() print(num[k-1])

알고리즘/백준 2022.05.18

[파이썬] BOJ_10989(수 정렬하기 3)

문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 해설 이 문제는 정렬이라고 해서 정렬 내장 함수를 사용하면 메모리 초과가 발생한다. 10,000까지 입력 가능하기 때문에 이를 리스트로 먼저 만들어 놓고 각 숫자별로 입력받은 횟수만큼 1을 더해주면 된다. 그리고 나서 10001번 만큼 반복문을 돌며 리스트의 i값이 0이 아닐 경우 i를 횟수만큼 출력하면 된다. 코드 -파이썬 #백준 10989(수 정렬하기 3) import sys n = int(sys.stdin..

알고리즘/백준 2022.05.17

[파이썬] BOJ_11651(좌표 정렬하기 2)

문제 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 해설 이 문제는 y좌표가 증가하는 순으로, y좌표가 같다면 x좌표가 증가하는 순으로 정렬하는 문제이다. 파이썬 내장 함수를 사용한다면, 정렬은 어렵지 않다. 나는 입력받은 좌표 값을 temp를 이용해 y, x로 뒤바꿔 정렬했다. 다른 분들은 람다를 이용해 한두줄로 끝내던데 난 아직 람다가 익숙하지 않아서 어렵다.. 람다를 이용하면 시간..

알고리즘/백준 2022.05.17

[파이썬] BOJ_1181(단어 정렬)

문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 해설 이 문제는 단어를 리스트로 입력받고 set()으로 중복 제거 후 알파벳 순 정렬, 길이 순 정렬을 해주면 된다. 알파벳 순 정렬은 누구나 다 알듯이 sorted()를 쓰면 되고 길이 순 정렬은 sort() 함수에 key로 길이를 넣어주면 된다. 코드 -파이썬 #백준 1181(단어 정렬) n = int(input()) word = [] for _ in range(n): a = ..

알고리즘/백준 2022.04.20

[파이썬] BOJ_11650(좌표 정렬하기)

문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 해설 list로 입력받아서 정렬해주기만 하면 끝난다. 그러나 실행 시간은 많이 걸린다. input()으로 입력받으면 시간 초과로 실패한다. 코드 -파이썬 #백준 11650(좌표 정렬하기) import sys n = int(sys.stdin.readline()) y = [] for i in range(n): x = list(map(int, ..

알고리즘/백준 2022.04.20

[파이썬] 프로그래머스_K번째 수

문제 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 해설 딱히 뭐 생각할 것 없이 문제에 적힌 순서대로 코드를 작성하면 된다. 코드 -파이썬 def solution(array, commands): answer = [] for i in commands: arr = array[i[0]-1:i[1]] arr.sort() answer.append(arr[i[2]-1]) return answer #################################################..

[파이썬] BOJ_1302(베스트셀러)

문제 www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 해설 이 문제는 가장 많이 팔린 책의 제목을 출력하는 문제인데, 베스트셀러가 여러권일 경우, 사전상 가장 먼저 오는 책을 출력해야 한다. 이런 경우엔 리스트를 오름차순으로 배열해놓기만 하면 쉽게 풀 수 있다. 베스트셀러를 구하는 것은 collections 모듈을 사용한다면 두 줄이면 가능하다. 코드 -파이썬 #백준 1302(베스트셀러) import collections n = int(input())..

알고리즘/백준 2021.04.17

[파이썬, 자바] BOJ_10814(나이순 정렬)

문제 www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 해설 이 문제는 가입한 순서대로 입력이 되기 때문에 나이만 비교하면 된다. 파이썬은 람다식을 이용해 비교를 했고, 자바는 이차원 배열을 이용해 비교를 했다. 코드 -파이썬 #백준 10814(나이순 정렬) n = int(input()) #회원 수 member = [] for _ in range(n): age, name = map(str, input().split()) #회원 나이, 이름 age = int(age)..

알고리즘/백준 2021.04.02
728x90
반응형