본문 바로가기

반응형

분류 전체보기

(400)
[BOJ] 백준 2798 블랙잭 (Swift) 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이 이 문제는 완전탐색으로 풀이할 수 있습니다. 3장의 카드를 뽑는 모든 경우의 수를 확인하고, M에 최대한 가까운 카드의 합을 확인하기 위해서는 3중 중첩 for문을 사용해서 풀이할 수 있습니다. 시간복잡도는 $O(n^3)$이 될 것이고, n이 최대 100이므로 $100^3 = 1,000,000$의 연산이 소요될 것 입니다. 1초에 약 1억번 연산이 가능하..
[BOJ] 백준 18870 좌표 압축 (Swift) 문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 풀이 좌표를 압축한 결과는 0 ~ 중복을 제거한 Array의 개수 - 1 까지 나타날 것입니다. 중복을 제거하는 것은 Set 메서드를 사용할 수 있습니다. Set 자료형을 사용해 중복을 제거한 후, 이것을 오름차순으로 정렬해줍니다. 이제 오름차순으로 정렬이 되어있고, 중복이 없는 Array에 요소를 Key로 갖고, index를 Value로 갖..
[BOJ] 백준 10814 나이순 정렬 (Swift) 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 Swift의 sort, sorted 메서드는 기본적으로 안정정렬 입니다. 안정정렬이란, 중복된 값이 있을 때 순서가 바뀌지 않고 동일하게 정렬이 되는 것을 의미합니다. 따라서, 나이를 기준으로 정렬을 해주면 끝입니다. 안정정렬을 직접 구현하는 방법으로는, 입력을 받을 때 순서도 같이 넣어주고 나이를 기준으로 정렬하되, 나이가 같다면 순서가 빠른 순으로 정렬을 해주는 방법으로 구현할 수 있습니..
[BOJ] 백준 1181 단어 정렬 (Swift) 문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 문제에 나타난 조건에 따라 정렬해주면 됩니다. 단, 중복된 단어를 제거해야 하므로 Set 자료형에 넣어준 후, 다시 Array로 만들어주는 작업이 필요합니다. 그 이후, sort 메서드의 클로저로 해당 조건을 작성해줍시다. 해당 조건은 길이가 같으면 사전순, 다르다면 짧은 것으로 정렬해주면 됩니다. sort의 클로저 구문을 { $0.count == $1.count (길이가 같..
[BOJ] 백준 11651 좌표 정렬하기 2 (Swift) 문제 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 풀이 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 ..
[BOJ] 백준 11650 좌표 정렬하기 (Swift) 문제 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 풀이 x좌표로 오름차순, x좌표가 같다면 y좌표로 오름차순으로 정렬해주는 문제입니다. Swift에서는 고차함수 sort 메서드의 파라미터인 Bool타입을 리턴해주는 클로저로 어떤 식으로 정렬을 해줄지 정의할 수 있습니다. x좌표가 같다면? y좌표를 오름차순으로 정렬하고, 같지 않다면 x좌표를 오름차순으로 정렬하도록 작성을 해주었습니다. 소..
[BOJ] 백준 1427 소트인사이드 (Swift) 문제 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 N을 String 자료형으로 입력받아서 내림차순으로 정렬 후, 출력해주면 되는 문제입니다. String을 sorted 메서드로 정렬한다면 Character 자료형의 배열로 리턴하게되는데, 이것을 String 자료형으로 감싸주면 됩니다. 소스코드 후기 String으로 입력받으면 쉽게 풀 수 있는 문제입니다.
[BOJ] 백준 2108 통계학 (Swift) 문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 수를 입력받아서 산술평균, 중앙값, 최빈값, 범위를 구하는 문제입니다. 먼저 입력받은 수를 Int 배열에 넣어주겠습니다. 가장 먼저, 산술평균을 구해봅시다. 산술평균은 N개의 수들의 합을 N으로 나눈 값 이고, 소수점 이하 첫째 자리에서 반올림한 값을 출력해주어야 합니다. Int 배열에 넣어줬기 때문에 합을 N으로 나눈다면 반올림한 값을 구할 수 없을 것입니다. 고차함수 map을 사용해 Double ..

반응형