BOJ 3190 뱀 swift

2025. 6. 4. 11:49·알고리즘
문제 링크 : https://www.acmicpc.net/problem/3190

 

 

문제 해설

정말 단순하게 구현문제입니다. 다른 언어면 아마 Deque를 구현해서 사용했어야 문제를 풀 수 있을겁니다.

뱀 문제를 풀 때 주의해야할 점은 뱀의 시작위치는 (1, 1)이라는 것입니다.

일반 배열처럼 (0, 0)에서 시작하면 틀리기 때문에 주의하시길 바랍니다.

 

코드

더보기
import Foundation

let n = Int(readLine()!)!
let k = Int(readLine()!)!

var apples = [(Int, Int)]()
for _ in 0..<k {
    let apple = readLine()!.split(separator: " ").map{ Int(String($0))! }
    apples.append((apple[0], apple[1]))
}

let l = Int(readLine()!)!
var moves = [(Int, String)]()
for _ in 0..<l {
    let move = readLine()!.split(separator: " ").map{ String($0) }
    moves.append((Int(move[0])!, move[1]))
}

let directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
var dir = 0
var time = 0
var snake = [(Int, Int)]()
snake.append((1, 1))

while true {
	time += 1
    let cur = snake.first!

    let next = (cur.0 + directions[dir].0, cur.1 + directions[dir].1)
    if !(1...n).contains(next.0) || !(1...n).contains(next.1) || snake.contains(where: {$0 == next}) {
        break
    }

    if apples.contains(where: { $0 == next }) {
        apples.removeAll(where: { $0 == next })
        snake.insert(next, at: 0)
    } else {
        snake.insert(next, at: 0)
        snake.removeLast()
    }
    if !moves.isEmpty {
        if moves.first!.0 == time {
            let changeDir = moves.first!.1
            if changeDir == "L" {
                dir = dir == 0 ? 3 : dir - 1
            } else {
                dir = (dir + 1) % 4
            }
            moves.removeFirst()
        }
    }
}

print(time)

 

'알고리즘' 카테고리의 다른 글
  • BOJ 2142 정돈된 배열 swift
  • BOJ 1222 홍준 프로그래밍 대회 swift
  • BOJ 2449 전구 swift
  • BOJ 1799 비숍
GwanSon
GwanSon
귀찮음과 불편함을 해결하는 개발자가 되자.
  • GwanSon
    관슨의 개발일지
    GwanSon
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • iOS (4)
      • swift (16)
      • UIKit (0)
      • swiftUI (2)
      • 알고리즘 (9)
      • CS (8)
      • 면접 (11)
      • Flutter (6)
      • 회고 (2)
      • 잡담 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    네이버 부스트캠프
    tuist
    토스
    fatal error
    백준
    알고리즘
    boj
    Flutter
    부스트캠프 10기
    Firebase
    챌린지
    SDK
    Swift
    부스트캠프
    2025 토스 Next
    구슬 탈출2
    FirebaseAuth
    모듈화
    ios
    android
    후기
    Provider
    네이버 부스트캠프 후기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
GwanSon
BOJ 3190 뱀 swift
상단으로

티스토리툴바