본문 바로가기

알고리즘85

[Swift] 백준 2501번 약수 구하기 링크: https://www.acmicpc.net/problem/2501 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 1부터 N까지 약수를 구해가며 K번째 약수까지 구했을 시 break합니다. K번째 약수를 구하지 못했다면 0을 프린트합니다. import Foundation let arr = readLine()!.split(separator: " ").map { Int(String($0))! } let N = arr[0] let M = arr[1] var numbers = [Int]() for i in 1...N { if N % i == 0 { numbers.append(i) }.. 2022. 3. 18.
[Swift] 프로그래머스 - 네트워크 링크: https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr dfs 기초 유형입니다. import Foundation func solution(_ n:Int, _ computers:[[Int]]) -> Int { var result = 0 var visited = Array(repeating: false, count: n) func dfs(i: Int) { if !visited[i] { // 방문하지 않았다면.. 2022. 3. 17.
[Swift] 프로그래머스 - 타겟 넘버 링크 : https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr numbers = [1, 2, 3, 4, 5] 라고 할 때, (1에 +, -를 붙인 경우) * (2에 +, -를 붙인 경우) * .... (마지막 숫자까지 +, -를 붙인 경우)를 곱하면 모든 경우가 나옵니다. 마지막 숫자까지 붙였을 때에 target과 똑같다면 결괏값에 +1을 해주면 됩니다. import Foundation f.. 2022. 3. 17.
2022 SK ICT 1차 코딩테스트 후기 1차 코딩테스트는 총 4문제였습니다. 주관적인 문제의 유형은 다음과 같습니다. 1. 그리디 2. 구현 3. 수학 4. 그래프 탐색 백준 실버~골드 사이의 난이도였습니다. 1~2번은 쉬웠으나 3~4번이.. ㅎㅎ 1~2번은 푸는 데 1시간 정도 걸렸고 3~4번은 1시간정도 생각해보다 답이 안 나올 거 같아서 그만뒀습니다. 3, 4번 푸신 분은 풀이 댓글로 알려주시면 감사하겠습니다! 2022. 3. 17.
[Swift] 백준 1654번 랜선 자르기 링크: https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 2805번 나무 자르기와 거의 비슷하게 이분탐색으로 풀었습니다. start = 1로 하는 것을 주의해주시면 됩니다. 0으로 하면 0으로 나누는 바람에 런타임 에러가 발생합니다. import Foundation let arr = readLine()!.split(separator: " ").map { Int(String($0))! } let N = arr[0] le.. 2022. 3. 17.
[Swift] 백준 2805번 나무 자르기 링크 : https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 높이의 최댓값을 구하는 이분탐색 문제입니다. mid는 높이의 최댓값입니다. 따라서 tree를 돌면서 mid보다 큰 만큼 자릅니다. 총 자른 길이(count)가 집에 가져가야 하는 숫자(M)보다 많으면 start를 옮기고 정답을 업데이트합니다. import Foundation let arr = readLine()!.split(separator: " ".. 2022. 3. 17.