Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • iOS
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • AutoLayout
  • jekyll
  • swift
  • 부스트캠프
  • 소프트웨어공학
  • constraint
  • 티스토리챌린지
  • image
  • AVAudioSession
  • ios
  • alamofire
  • Git
  • Concurrency
  • 모듈화
  • guard
  • authenticationinterceptor
  • 알고리즘
  • SwiftUI
  • Python
  • 소프트웨어 테스트
  • boj
  • 오블완
  • ImageResource
  • Optional
  • 소프트웨어 공학
  • 백준
  • CS
  • Swift5.7
  • MVC
  • if let

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
알고리즘

[백준 BOJ] BOJ-1059 좋은 구간

2022. 9. 18. 20:30

#1059 좋은 구간

 

문제 정리

imageimage

 

풀이

import Foundation

let l = Int(readLine()!)!
let s = Set(readLine()!.split(separator: " ").map { Int($0)! })
let n = Int(readLine()!)!

var min = 1
var max = 1000

// 0. n이 집합 S에 속하는 경우
if s.contains(n) {
    min = n
    max = n
}
else {
    // 0. n-1 방향으로 진행하면서 집합 S와 일치하는 값이 있으면 직후의 값을 min에 저장
    for i in stride(from: n, through: 1, by: -1) {
        if s.contains(i) {
            min = i+1
            break
        }
    }
    // 0. n+1 방향으로 진행하면서 집합 S와 일치하는 값이 있으면 직전의 값을 max에 저장
    for i in stride(from: n, through: 1000, by: 1) {
        if s.contains(i) {
            max = i-1
            break
        }
    }
}

// 1. 범위 생성
let arr = Array(min...max)
var output = 0

// 2. A < B인 경우의 수
for i in 0..<arr.endIndex {
    for j in i+1..<arr.endIndex {
        let a = arr[i]
        let b = arr[j]
        // 3. Range(A...B)에 n 이 포함되는 경우 count 증가
        if Range(a...b).contains(n) { output += 1 }
    }
}
print(output)

예제 입력 2 에 대한 예시

  • 집합 S에서 n 으로부터 제일 가까운 원소를 찾아 범위를 만든다. -> 8, 13 -> 범위 : 9 ~ 12
  • A < B 인 경우의 수를 찾아낸다. -> (9,10), (9,11), (9,12), (10,11), (10,12), (11,12)
  • 각 경우에 대해 n이 포함되는 경우 count를 증가시킨다. -> (9~10).contains(n) = true

image

 

풀고나서 알게된 것

문제를 제대로 읽지않고 무작정 풀려는 습관이 있어 문제를 이해하는데 시간이 좀 걸렸다ㅜ

앞으론 문제를 이해한 다음 풀이에 돌입해보장

저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[백준 BOJ] BOJ-8393 합  (1) 2022.09.18
[백준 BOJ] BOJ-7568 덩치  (0) 2022.09.18
[백준 BOJ] BOJ-1920 수 찾기  (1) 2022.09.18
[백준 BOJ] BOJ-1010 다리 놓기  (0) 2022.09.18
[백준 BOJ] BOJ-1008 A/B  (1) 2022.09.18
    '알고리즘' 카테고리의 다른 글
    • [백준 BOJ] BOJ-7568 덩치
    • [백준 BOJ] BOJ-1920 수 찾기
    • [백준 BOJ] BOJ-1010 다리 놓기
    • [백준 BOJ] BOJ-1008 A/B
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바