itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • POSTECH
  • 생활코딩
  • 독립서점
  • 세그멘테이션
  • ios
  • crud
  • 점주
  • CoreData
  • AppleDevloperAcademy
  • 개발자
  • SwiftUI
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • CS
  • 킨디
  • SWIFT
  • 어플
  • binding
  • mongodb
  • nosql
  • 연결리스트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

PS

[프로그래머스 - Swift] 다리를 지나는 트럭

2023. 1. 19. 11:57

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42583

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

1. while문으로 bridge가 빌 때까지 실행

2. bridge를 지나는 트럭의 위치 업데이트 해주고,

3. 다리에 올라올 트럭을 포함한 무게가 다리 무게 범위 만족하면 트럭 추가

4. 시간 += 1

 

worst case로 bridge_length * truck_weights인 경우가 시간 초과가 될까봐, while문 내부의 연산을 최대한 가볍게 하려고 했다.

while문에서 매번 합을 구하지 않고, 애초에 sum 변수를 통해 다리 위에서 나가는 트럭 무게, 들어오는 트럭의 무게만 더하고 빼줬다.

다리를 지나는 트럭 위치를 업데이트해줘야 했는데, 새로운 변수를 만들어 나가지 않는 트럭들의 정보를 담았고 앞에 빈 자리를 하나 붙이는 방식으로 진행했다.

 

다행히 시간 초과가 나지 않았다.

 

코드

func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
    var trucks = Array(truck_weights.reversed())
    var bridge = [trucks.removeLast()] + Array(repeating: 0, count: bridge_length-1)
    var sum = bridge.first!
    var time = 1
    
    
    while sum != 0 {
        sum -= bridge.last!
        let arr = bridge[0..<bridge_length-1]
        bridge = [0] + arr
        
        if let truck = trucks.last, truck + sum <= weight {
            bridge[0] = truck
            sum += truck
            trucks.removeLast()
        }
        
        time += 1
    }
    return time
}
저작자표시 (새창열림)

'PS' 카테고리의 다른 글

[백준 - Swift] 10799 쇠막대기  (0) 2023.01.19
[백준 - Swift] 1874 스택 수열  (0) 2023.01.19
[ 백준 2579 - 계단 오르기 ]  (0) 2021.08.11
[ 백준 1003 - 피보나치 함수 ]  (0) 2021.08.10
[백준 11726 - 2 x n 타일링] DP  (0) 2021.08.09
    'PS' 카테고리의 다른 글
    • [백준 - Swift] 10799 쇠막대기
    • [백준 - Swift] 1874 스택 수열
    • [ 백준 2579 - 계단 오르기 ]
    • [ 백준 1003 - 피보나치 함수 ]
    itisjustK
    itisjustK

    티스토리툴바