목록Swift (23)
REC
문제 설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krn명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다.처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다.모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다.입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개..
문제 설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다.1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다.예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다.두..
오랜만에 Swift 풀이입니다.문제 설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krn개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 ..

이번 주차는 대망의 DP다. 사실 원래 순서대로 하면 더 나중인데 어떠한 이슈로 DP를 좀 앞당겨왔다. 문제 설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr간단히 말하자면 n * m (ㅋㅋ) 모양의 격자가 있는데, 집은 (1,1)에 있고 학교가 (m,n)에 위치해 있다.물에 잠긴 지역을 피해 집 → 학교로 가는 최단경로의 개수를 return 해야 하는 문제.격자의 크기 m, n은 1 이상 100 이하인 자연수이고, m과 n이 모두 1인 경우는 없다.물에 잠긴 지역은 0개 이상 10개 이하이고, 집과 학교가 물에 잠긴 경우는 없다.오른쪽과 아래쪽으로만 움직일 수 있고, 최단경로의 개수를 1,000,0..
문제 설명https://www.acmicpc.net/problem/1253N개의 수 중, 어떤 수를 다른 수 두 개의 합으로 나타낼 수 있으면 그 수는 좋다. 이때 좋은 수가 몇 개인지 출력하는 문제. ex) 1,2,3,4,5,6,7,8,9,10 중 좋은 수는 3,4,5,6,7,8,9,10이다. 3 = 1 + 2, 4 = 1 + 3, ...수의 위치가 다르면 값이 같아도 다른 수로 본다.입력: 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)출력: 개수를 첫 번째 줄에 출력한다. 풀이 과정투 포인터 알고리즘을 사용했다.투 포인터 알고리즘이란 주로 정렬된 배열의 연속적인 구간에서 합이나..
문제 설명https://www.acmicpc.net/problem/6236 풀이 과정1. Python 풀이import sysinput = sys.stdin.readlineN, M = map(int, input().split())money = [int(input()) for _ in range(N)]min_k = max(money)max_k = sum(money)while min_k = money[i]: temp -= money[i] else: temp = K - money[i] cnt += 1 if cnt M: min_k = K + 1print(answer) 2. Swift 풀이let input = readLine..

오늘의 문제https://www.acmicpc.net/problem/1463ㅋㅋ 하... 실환가 진심 풀다가 화딱지 나서 죽을 뻔했네요 내 풀이import Foundationvar N: Int = Int(readLine()!)!var dp: [Int] = Array(repeating: 0, count: 1_000_001) // 10의 6제곱까지 받을 수 있게dp[0] = 0dp[1] = 0 // 초기값 설정func solution(N: Int) { for i in 2...N { // DP 바텀업 방식 : 작은 문제 -> 큰 문제로 상향식 dp[i] = dp[i - 1] + 1 // 기본 값 if i % 3 == 0 { // i가 3의 배수면? if dp[..
오늘의 문제https://www.acmicpc.net/problem/1654 이게... 최소한 내 머릿속에서라도 일정한 규칙대로 예제가 풀려야 코드로 구현을 하든가 말든가 하는데 그냥 내 머리로도 예제 입력 1을 어떻게 처리해야 200이 나오는지 모르겠어서 한참 걸렸다. 이분탐색인 거 알아도 뭘 어디에 이분탐색을 적용해야 할지 감이 안 잡혀서 레전드 나누기만 하다가 결국 검색 찬스를 써서 해결했다. 코드를 보면 이해는 되는데 생각하는 걸 코드로 구현해내는 능력이 너무 부족한 듯. 너무 오랜만에 하려니까 다 까먹어버린 게 제일 크다. 다시 열심히 하겠습니다... 꾸준히가 제일 중요한 것 같다. 설명은 주석으로 적어놨는데 특히 주의해야 할 부분이1. if-else문에서 numOfLAN과 N값이 같을 때 처리..
오늘의 문제https://www.acmicpc.net/problem/18870 나의 풀이let N = Int(readLine()!)!var input = readLine()!.split(separator: " ").map { Int($0)! }// Set으로 중복 제거 후 sorted로 오름차순 정렬let setInput = Array(Set(input)).sorted()// 딕셔너리 생성// 계산된 값을 저장해두고 아는 값이면 꺼내서 바로 사용하기 위함var dict = [Int: Int]()// (인덱스, 값) 순서로 들어옴for (index, num) in setInput.enumerated() { // 딕셔너리의 key로 '배열의 값'을 저장하고 딕셔너리의 value로 '그 값의 인덱스'를 ..
오늘의 문제 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 내 풀이 import Foundation let input = readLine()!.split(separator: " ").map { Int($0)! } var M = input[0] var N = input[1] var arr: [Bool] = Array(repeating: true, count: N+1) arr[0] = false if N >= 1 { arr[1] = false } // 1 1 일 때는 그냥 강제로 0 출력해버림 if M == 1 && N == 1 { print..