https://www.acmicpc.net/problem/7569 대표적인 그래프 탐색 문제!! 마지막 토마토가 익는 날까지 최소 며칠이 걸리는지 풀어보는 문제다.ㅋㅋ 큐에 익은 토마토 좌표를 넣고, 그 토마토의 상하, 좌우, 위아래까지 확인한 다음 그 토마토가 익은 날짜에 +1을 해서 저장해준다. 그리고 익은 토마토 큐에 넣어주고 또 반복! let temp = readLine()!.split(separator: " ").map({ Int($0)! }) let m = temp[0] let n = temp[1] let h = temp[2] var tomato: [[[Int]]] = Array(repeating: [], count: h) var visited = Array(repeating: Array(re..
이전 게시글에서 다이나믹 프로그래밍을 맛볼 수 있었는데, 한 발짝 더 나아가서 효율적으로 풀 수 있는 방법을 고민하는 문제가 여기 있다. 이전 게시글 보러가기 ⬇️ 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) 하지만 이걸 그대로 코드로 구현하면 시간 초과..
다이나믹 프로그래밍이란? 다이나믹 프로그래밍, 동적 계획법이라고 불리는 알고리즘은 하나의 커다란 문제를 작은 문제들로 나누어 값을 구하는 방법이다. 점화식을 구하고 나면 쉽게 풀 수 있지만 이런 사고방식에는 연습이 필요하다. 이 문제에서는 1, 2, 3만을 이용해 숫자를 나타낼 때, 그 경우의 수를 구해야 한다. 작은 것부터 차례대로 생각해보자. n = 1 1 1개 n = 2 1+1 2 2개 n = 3 1+1+1 1+2 2+1 3 4개 n = 4 1+1+1+1 1+1+2 1+2+1 1+3 2+1+1 2+2 3+1 7개 n=1일 때는 1, n=2일 때는 2, n=3일 때는 4 그리고 n=4일 때는 7개의 경우의 수가 나온다. 이 때 n=4를 자세히 살펴보자. 1+3이라는 큰 틀을 구할 때, 오른쪽 피연산자..
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문을 돌면서 한 줄씩 읽었다 한 명의 번호와 그 학생이 좋아하는 학생 번호들이 나열되기 때문에 한 줄을 읽을 때마다 실행해야할 것들이 많..
중앙에서 시작해서 달팽이가 가는 그대로 따라가면서 숫자를 할당해주면 된다! 채점 중 50%대 쯤에 틀렸다고 나왔는데, 찾고자 하는 자연수가 1일 때를 생각 안해서 틀렸다. 스스로 반례 찾는 연습도 해야할 듯!! // // main.swift // CodingTestPractice // // Created by CHOI on 2023/05/23. // // 달팽이 import Foundation let n = Int(readLine()!)! // 홀수인 자연수 N let target = Int(readLine()!)! // 찾고자 하는 N^2 이하의 자연수 var arr = Array(repeating: Array(repeating: 0, count: n), count: n) func solution() ..