배열안에 tuple을 넣기 위해서 저렇게 하나씩 초기화를 해주어야 한다 var queue : [(x: Int, y:Int)] = [] queue.append((1, 1)) queue.append((1,2)) queue.removeFirst() print(queue) 굳이 x, y 인자를 사용하지 않는다면 생략해주어도 괜찮다 var queue : [(_: Int, _:Int)] = [] queue.append((1, 1)) queue.append((1,2)) queue.removeFirst() print(queue)
외판원 순회 https://www.acmicpc.net/problem/2098 2098번: 외판원 순회 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 방문했는지 확인 하는 법 & 연산자를 통해, 겹치는 1이 있으면 1이상의 값이 나올 것이다 겹치는 게 없으면 0이 나온다 -> 아직 방문하지 않은 도시 var visited = 011 var i = 100 print(visited & i) // 100 import Foundation var N = Int(readLine()!)! var matrix..
stride(from: , to: , by: ) 를 사용하여 증감을 설정할 수 있다. let minutes = 60 let interval = 5 for i in stride(from: 0, to: minutes, by: interval) { print(i) }
// 10진수 -> 2진수 let num: Int = 10 let binary_num = Int(String(num, radix: 2))! print(binary_num) // 2진수 -> 10진수 let binary_num = "1010" let num = Int(num, radix: 2)! print(num)
https://www.acmicpc.net/problem/12933 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net Swift로 풀때 문자열을 for문으로 순회해서 하나씩 값을 확인할 때, Array로 만들고 숫자 인덱스로 접근할 수 있게 하는것이 훨씬 편하다 라는 것을 배운 문제이다 var word = "hello" 라는 문자열을 "h", "e", "l", "l", "o" 이렇게 접근하고 싶다면 var idx = input.index(input.startIndex, offsetBy: i) 이렇게 index로 꺼내고 word[inde..
코딩테스트의 구현문제를 위해 빠질 수 없는 문자열처리에 대한 Swift 문법을 정리해보자 1. 문자열 입력받기 Swift에서 readLine() 함수를 사용해서 한줄 읽어들일 수 있는데, 이때 nil 값이 들어올 수 도 있으므로 Swift는 readLine 함수가 Optional 타입의 String을 반환하게 설계한듯하다 어처피 백준에서 옵셔널 처리할 일은 없으므로 강제옵셔널 (!) 처리를 해준다. var input = readLine()! // 문자열 하나 입력받기 2. 문자열의 원소를 하나씩 출력하기 !! Swift는 input[1] 이런식으로 바로 Int 값으로 인덱스 접근이 허용되지 않는다 !! index() 메소드를 이용해서 인덱스를 가져온 후 가져온 인덱스로 문자열에 접근해야 한다 for i ..
https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 행렬의 곱은 (n*k) 사이즈 행렬과 (k*m) 사이즈 행렬이 곱해졌을 때 (n*m) 크기의 행렬을 리턴한다는 특징이 있다 import Foundation func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { let n = arr1.count // 세로 let m = arr1[0].count // arr1 가로 == arr2 세로 let t = ..
https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 1. BFS 산봉우리들을 세는 문제이다. 좌표는 상하좌우 + 대각선, 총 8방향으로 인접한 칸이면 이동할 수 있으며, 높이 값이 0 이면 산봉우리가 아니다 !!! 따라서 bfs 탐색 또한 높이가 0 보다 클 때만 처리했다. bfs에서 , 현재 확인중인 array[x][y] 값을 중심으로, 자기자신 보다 높은 위치를 만나면 (x, y) 에 해당하는 봉우리 라인은 산봉우..