시뮬레이션
-
백준 14503 로봇 청소기Algorithm/BOJ 2021. 3. 19. 14:04
출처: www.acmicpc.net/problem/14503 분류: 시뮬레이션 접근방식 현재 방향을 생각하면서 청소기를 돌려주면 되는 문제였습니다. 저는 현재 로봇 청소기의 위치와 현재 방향을 전역변수로 두고 둘을 조작해주면서 계산했습니다. 방향을 enum 타입으로 정의했고 청소기는 계속 왼쪽 방향으로 회전하기 때문에 각 방향에서 왼쪽으로 회전하는 함수를 만들었습니다. enum Direction: Int { case up = 0, right, down , left mutating func turnLeft() { switch self { case .up: self = .left case .left: self = .down case .down: self = .right case .right: self = ...
-
백준 17135 캐슬디펜스Algorithm/BOJ 2021. 3. 18. 14:14
출처: www.acmicpc.net/problem/17135 분류: 시뮬레이션 접근방식 구현도 구현인데 생각을 좀 잘못해서 몇 번의 시행착오를 겪었습니다. 문제를 잘 읽지 않으면 틀릴 수 있는 주의해야 할 점들이 몇 가지 있었던 문제 같습니다. 저는 문제를 보고 크게 3가지의 구현 단계로 나눠야겠다고 생각했습니다. 1. 궁수 3명 뽑기 2. 현 위치에서 제거 가능한 적 찾기 3. 궁수 전진 각 부분이 잘 구현되면 흐름에 따라 답을 찾는 건 어렵지 않게 할 수 있습니다. 저는 우선 주어진 맵 밑에 궁수가 배치될 행 (n행) 을 하나 추가했는데요, 여기에 궁수를 두고 나머지 적을 모두 밑으로 내리는 건 에너지 소모가 굉장히 큰 일이라서, 저는 여기서부터 출발해 궁수가 한 칸씩 위로 올라가면서 적을 죽이는 방..
-
백준 18808 스티커 붙이기Algorithm/BOJ 2021. 3. 7. 18:48
출처: www.acmicpc.net/problem/18808 분류: 시뮬레이션 접근방식 주어진 요구사항대로 잘 구현하면 되는 문제였습니다! 각 부분을 함수로 잘 쪼개면 어렵지 않게 해결할 수 있을 것 같네요 :) 저는 isPaste, paste, rotate 등을 함수로 분리해서 해결했습니다. rotate 하는 부분이 좀 헷갈렸는데, 기억해두면 나중에도 유용하게 사용할 수 있을 것 같아요! 90도 회전 func rotate(_ sticker: [[Int]]) -> [[Int]] { let rowSize = sticker.count let colSize = sticker[0].count var rotated = [[Int]](repeating: [Int](repeating: 0, count: rowSize..