전체 글
-
[백준] 톱니바퀴 (14891번) Swift알고리즘 2021. 10. 12. 14:44
문제 내용 4개의 톱니바퀴가 존재한다.톱니는 S, N 극으로 존재하고회전하는 톱니 A 와 맞닿은 톱니 B 가 맞닿은 부분이 같은 극이라면 회전하지 않고서로 다른 극이라면 회전한다.모두 회전하고 난 후 톱니바퀴의 12시 방향으로 총 점수를 내라.1번 톱니의 12시 방향이 S 극이면 + 1, 2번은 + 2, 3번은 + 4, 4번은 + 8 전체 코드 import Foundation // 1. 톱니를 저장할 배열 var gears: [Gear] = [] // 2. 결과를 저장할 값 var result = 0 // 3. 4개의 톱니의 값을 얻어옴 for _ in 0.. Int { return info[leftIndex] } } 결론 구조체로 만들어서 풀면 확실히 코드가 길어지는 것 같은데 구조체 생성 외에는 코드..
-
[백준] 구슬 탈출 2 (13460번) Swift알고리즘 2021. 10. 11. 15:04
문제 내용 직사각형 배열에 빨간 구슬 1개, 파란 구슬 1개와 구멍 1개가 존재한다. 왼쪽, 오른쪽, 위, 아래로 기울이기를 통해 구슬을 이동시킬 수 있다. 10번 이하의 기울이기를 통해 빨간 구슬만 구멍에 빼낼 수 있는지 확인해라. 1칸씩 이동하는 것이 아닌 벽에 막히거나 다른 구슬에 막혀서 멈춰질 때 까지 기울이고 있는 것이다. 전체 코드 // 1. n, m 읽고 설정 let nm = readLine()!.split { $0 == " " }.map { Int(String($0))! } let n = nm[0], m = nm[1] // 2. 위치를 저장할 배열 var location: [[String]] = Array(repeating: [], count: n) // 3. 방문에 대해 저장을 할 dic..
-
[백준] 주사위 굴리기 (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..