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
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • iOS (3)
      • swift (15)
      • UIKit (0)
      • swiftUI (2)
      • 알고리즘 (8)
      • CS (8)
      • 면접 (11)
      • Flutter (4)
      • 회고 (2)
      • 잡담 (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Swift
    네이버 부스트캠프 후기
    네이버 부스트캠프
    boj
    챌린지
    ios
    모듈화
    부스트캠프
    백준
    tuist
    부스트캠프 10기
    후기
    2025 토스 Next
    토스
  • 최근 댓글

  • 최근 글

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

티스토리툴바