KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

이진 탐색 - 부품 찾기(Swift)
Algorithm/이코테 문제풀이

이진 탐색 - 부품 찾기(Swift)

2022. 8. 9. 17:32
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다.

 

문제

저작권 문제가 될 수 있어 문제는 삭제합니다.

 

풀이 코드

// 입력 예시 
// 5
// 8 3 7 9 2
// 3
// 5 7 9

import Foundation

let n = Int(readLine()!)!
let componentArr = readLine()!.split(separator: " ").map({Int(String($0))!}).sorted()
let m = Int(readLine()!)!
let targetArr = readLine()!.split(separator: " ").map({Int(String($0))!})

var resultArr = [String]()

for i in 0..<m {
    
    let target = targetArr[i]
    var start = 0
    var end = componentArr.count - 1
    
    while true {
        
        if start > end {
            resultArr.append("no")
            break
        }
        
        let mid = Int(floor((Double(start) + Double(end)) / 2))
        
        if componentArr[mid] == target {
            resultArr.append("yes")
            break
        } else if componentArr[mid] > target {
            end = mid - 1
        } else {
            start = mid + 1
        }
    }
}

print(resultArr) // ["no", "yes", "yes"]

'Algorithm > 이코테 문제풀이' 카테고리의 다른 글

다이나믹 프로그래밍 - 1로 만들기(Swift)  (0) 2022.08.09
이진 탐색 - 떡볶이 떡 만들기(Swift)  (0) 2022.08.09
정렬 - 두 배열의 원소 교체(Swift)  (0) 2022.08.09
정렬 - 성적이 낮은 순서로 학생 출력하기(Swift)  (0) 2022.08.09
정렬 - 위에서 아래로(Swift)  (0) 2022.08.09
    'Algorithm/이코테 문제풀이' 카테고리의 다른 글
    • 다이나믹 프로그래밍 - 1로 만들기(Swift)
    • 이진 탐색 - 떡볶이 떡 만들기(Swift)
    • 정렬 - 두 배열의 원소 교체(Swift)
    • 정렬 - 성적이 낮은 순서로 학생 출력하기(Swift)
    KWiOS
    KWiOS

    티스토리툴바