이전 게시글에서 다이나믹 프로그래밍을 맛볼 수 있었는데, 한 발짝 더 나아가서 효율적으로 풀 수 있는 방법을 고민하는 문제가 여기 있다. 이전 게시글 보러가기 ⬇️ 2023.07.18 - [공부하자!/알고리즘] - 백준 | 9095 1, 2, 3 더하기 Swift - DP 우선, 점화식을 구해보자! 문제에서 P(1)부터 P(10)까지 제공해주었다 1 2 3 4 5 6 7 8 9 10 1 1 1 2 2 3 4 5 7 9 그림에서 보면 알 수 있듯이, 11번째 삼각형의 한 변의 길이는 9+3, 즉 P(10)+P(6)인 12이다. 10번째 삼각형의 한 변의 길이는 P(9)+P(5)인 9이다. 즉 점화식을 구하면 다음과 같다 P(n) = P(n-1) + P(n-5) 하지만 이걸 그대로 코드로 구현하면 시간 초과..
46. Permutations Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Example 1: Input: nums = [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] Example 2: Input: nums = [0,1] Output: [[0,1],[1,0]] Example 3: Input: nums = [1] Output: [[1]] Swift로 순열을 구하는 코드를 찾다가 풀게 된 문제! (Swift에서는 순열, 조합을 일일이 구해야 하기 때문에..한 번 제대로 ..
주변에 좋아하는 학생이 많도록 자리를 배치하는 문제 문제 자체는 이해가 쉬웠다! 그대로 구현하는 게 시간이 걸릴 뿐...🤯 사실 며칠 전에 풀다가 만 코드가 있었는데, 다시 보니까 무슨 소린지 전혀 모르겠어서 처음부터 다시 짰다 ㅋㅋ 정확하게 뭘 짜야 하는지 주석부터 달고 시작했더니 가닥이 쉽게 잡히는 것 같다 let n = Int(readLine()!)! var seats = Array(repeating: Array(repeating: 0, count: n), count: n) // 전체 좌석 만들기 우선 전체 좌석을 만들고 초기화해주었다 그리고 n * n 만큼 for문을 돌면서 한 줄씩 읽었다 한 명의 번호와 그 학생이 좋아하는 학생 번호들이 나열되기 때문에 한 줄을 읽을 때마다 실행해야할 것들이 많..
#1 런타임에러 import Foundation let t = Int(readLine()!)! for _ in 0...t { let n = Int(readLine()!)! let nums = readLine()!.split(separator: " ").map{Int($0)!} print(solution(n: n, nums: nums)) } func solution(n: Int, nums: [Int]) -> String { let temp = nums.sorted() return "\\(temp[0]) \\(temp[n - 1])" } t - 1을 안해줘서 한 줄을 더 받고 있었다.. 하지만 고쳤는데 시간 초과 ㅠ 역시 sorted는 안되려나 #2 시간초과 import Foundation let t = I..
https://school.programmers.co.kr/learn/courses/30/lessons/12981 문제 풀이 영어로 끝말잇기를 하는데 앞뒤 글자가 정확한지 같은 단어가 나오진 않았는지 확인한 후에 틀린 친구는 누구이고 몇 번째에 틀렸는지를 구해내면 되는 문제다. 먼저 게임이 진행되는 리스트 game을 만들어 놓고 시작 진행되는 동안 우선 뒷글자와 일치하는지 확인(1) -> 아닐 경우 answer에 넣고 break 앞서 이 단어가 나오지 않았는지 확인(2) -> 아닐 경우 answer에 넣고 break 둘 다 괜찮으면 게임이 진행되도록 game에 append 게임이 끝나도 걸리는 부분이 없다면 answer를 [0, 0]으로 만들어 놓고 return 한다. 여기서 주의해야 할 점!! brea..
https://school.programmers.co.kr/learn/courses/30/lessons/49994 문제 설명 게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다. U: 위쪽으로 한 칸 가기 D: 아래쪽으로 한 칸 가기 R: 오른쪽으로 한 칸 가기 L: 왼쪽으로 한 칸 가기 캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다. 예를 들어, "ULURRDLLU"로 명령했다면 1번 명령어부터 7번 명령어까지 다음과 같이 움직입니다. 8번 명령어부터 9번 명령어까지 다음과 같이 움직입니다. 이때, 우리는 게임 캐릭터가 지나간 길 중 ..