전체 글
-
[백준] 주사위 굴리기 (14499번) Swift알고리즘 2021. 10. 10. 15:31
문제 내용 지도 위에서 주사위를 굴린다. 굴릴 수 있는 위치면 주사위의 상단에 있는 값을 출력한다. 현재 주사위가 밟고 있는 위치에 있는 값이 0 이라면, 그 위치에 주사위의 바닥 값을 설정한다. 현재 주사위가 밟고 있는 위치에 있는 값이 0 이 아니라면, 주사위의 바닥 값을 그 위치에 있는 값으로 설정하고 그 위치에 있는 값을 0으로 설정한다. 전체 코드 // 1. Dice 클래스 인스턴스 생성 let dice = Dice() // 2. m, n, x, y, k 값을 읽어옴 let mnxyk = readLine()!.split { $0 == " " }.map { Int(String($0))! } let m = mnxyk[0], n = mnxyk[1] var x = mnxyk[2], y = mnxyk[3..
-
[백준] 뱀 (3190번) Swift알고리즘 2021. 10. 9. 17:28
문제 내용 뱀이 1초에 한칸씩 이동을 하는데 벽이나 자신의 몸통에 부딪히면 게임이 종료된다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 초기 뱀의 길이는 1이고, 오른쪽을 향한다. 전체 코드 // 1. n 값 let n = Int(readLine()!)! // 2. k 값 let k = Int(readLine()!)! // 3. 현재 전체 상태를 저장하기 위한 배열 (지도) var location: [[Int]] = Array(repeat..
-
RxSwift KeyBoard (RxKeyBoard) 간단한 사용법스위프트 2021. 10. 7. 20:14
먼저 view 백그라운드 컬러를 잘보이게 핑크로 지정하고 textField (흰색) 의 bottom constraint 를 safeAreaLayoutGuide 로 설정했습니다. func configureUI() { view.backgroundColor = .systemPink view.addSubviews([textField]) textField.snp.makeConstraints { $0.height.equalTo(50) $0.leading.trailing.bottom.equalTo(view.safeAreaLayoutGuide) } } import RxKeyboard // 중략 func subscribe() { RxKeyboard.instance.visibleHeight .drive(onNext: { ..
-
[백준] 탈출 (3055번) Swift알고리즘 2021. 10. 7. 19:15
문제 내용 R x C 의 배열이 주어진다. "D" 는 도착 위치 (비버의 굴), "S" 는 시작 위치 (고슴도치 위치), "X" 는 이동 불가 (돌), "*" 는 물 위치, "." 은 빈 공간 이다. "S" 는 상하좌우 한칸씩 움직일 수 있고, 움직이고 나면 물이 상하좌우 한칸씩 움직인다. "S" 는 "." 만 이동할 수 있다. 만약 "S" 에서 "D" 까지 이동 가능하면 최소 시간을 출력하고, 이동 불가능하면 "KAKTUS" 를 출력해라. 전체 코드 // 1. R, C 불러옴 let size = readLine()!.split { $0 == " " }.map { Int(String($0))! } // 2. 위치를 저장할 location 배열 var location: [[Int]] = Array(repe..
-
[백준] 알고스팟 (1261번) Swift알고리즘 2021. 10. 7. 17:22
문제 내용 M x N 의 미로가 주어진다. 0은 벽이 없는 곳이고, 1은 벽이 있는 곳이다. 목적지 (M, N) 까지 가는데 최소한 벽을 몇 개 부수어야 하는지 구해라. 전체 코드 // 1. M x N 읽어옴 let size = readLine()!.split { $0 == " " }.map { Int(String($0))! } // 2. 미로 저장할 배열 var maze: [[Int]] = Array(repeating: [], count: size[1]) // 3. 해당 위치에 도착하는데 벽을 몇 개 부셨는지 저장하기 위한 배열 var weights: [[Int]] = Array(repeating: Array(repeating: size[0] + size[1] - 2, count: size[0]), c..
-
[백준] 이모티콘 (14226번) Swift알고리즘 2021. 10. 7. 14:34
문제 내용 이모티콘 S개를 만든다.처음에는 화면에 이모티콘 1개 존재한다.다음 3가지 연산으로 이모티콘 S 개를 만든다. 화면에 있는 이모티콘을 모두 복사하여 저장 복사되어있는 이모티콘을 붙여넣기 함 이모티콘 1개 삭제 모든 연산은 1초가 걸린다. 전체 코드 // 1. 목표 이모티콘 개수 받기 let s = Int(readLine()!)! // 2. queue 생성 // count = 현재 화면의 이모티콘 개수, time = 시간, copyCount = 현재 복사되어 있는 이모티콘 수 var queue: [(count: Int, time: Int, copyCount: Int)] = [] // 3. queue 를 가리킬 queueIndex 생성 var queueIndex = 0 // 4. 결과 저장 var..
-
[백준] 배열 돌리기 4 (17406번) Swift알고리즘 2021. 10. 7. 00:29
문제 내용 N X M 사이즈의 배열이 주어진다. 회전 연산 K 개가 주어지고 주어진 회전 연산으로 회전을 하여 행의 최솟값을 구해라 회전 연산은 모두 한 번씩 사용, 순서는 임의로 정해도 된다. (모든 경우의 수로 하라는 뜻) 제한사항 3 ≤ N, M ≤ 50 1 ≤ K ≤ 6 1 ≤ A[i][j] ≤ 100 1 ≤ s 1 ≤ r-s < r < r+s ≤ N 1 ≤ c-s < c < c+s ≤ M 전체 코드 // 1. size (N, M, K 입력 받기) let size = readLine()!.split { $0 == " " }.map { Int(String($0))! } // 2. 원본 배열 var originArr: [[Int]] = Array(repeating: [], count: size[0])..
-
[프로그래머스] 게임 맵 최단거리 Javascript자바스크립트 2021. 10. 6. 15:48
문제 내용 maps 배열이 주어짐.(0, 0) 에서 출발해서 (n -1, m-1) 까지 최단거리를 찾아라. 최단거리가 없다면 -1 을 return 해라. 제한사항 maps는 n x m 크기의 게임 맵의 상태가 들어있는 2차원 배열로, n과 m은 각각 1 이상 100 이하의 자연수입니다. n과 m은 서로 같을 수도, 다를 수도 있지만, n과 m이 모두 1인 경우는 입력으로 주어지지 않습니다. maps는 0과 1로만 이루어져 있으며, 0은 벽이 있는 자리, 1은 벽이 없는 자리를 나타냅니다. 처음에 캐릭터는 게임 맵의 좌측 상단인 (1, 1) 위치에 있으며, 상대방 진영은 게임 맵의 우측 하단인 (n, m) 위치에 있습니다. 전체 코드 function solution(maps) { // 1. n 과 m 을..