Neoself의 기술 블로그

알고리즘 지식 정리(10월 24일)[백준 클래스 2] 본문

개발지식 정리/알고리즘

알고리즘 지식 정리(10월 24일)[백준 클래스 2]

Neoself 2024. 10. 24. 09:55

윤년

let num = Int(readLine()!)!
print(num%4 == 0 && (num%100 != 0 || num%400 == 0) ? "1" : "0")

여기서 != 연산자를 양옆에 공백 없이 사용하면 컴파일 에러 발생한다...

 

사분면 고르기

let a = Int(readLine()!)!
let b = Int(readLine()!)!
var ans = -1
if a<0 {
    ans = b<0 ? 3 : 2
} else {
    ans = b<0 ? 4 : 1
}
print(String(ans))

 

알람시계

import Foundation

var arr = readLine()!.components(separatedBy:" ").map{Int($0)!}
if 45>arr[1] {
    arr[0]=(arr[0]+23)%24
}
arr[1]=(arr[1]+15)%60
print("\(arr[0]) \(arr[1])")

 

소수 찾기

import Foundation
let N = readLine()!
let arr = readLine()!.components(separatedBy: " ").map{Int($0)}
var ans = 0
for i in 0..<arr.count{
    if 1<arr[i]! && (1...arr[i]!/2).filter{arr[i]!%$0==0}.count == 1 {
        ans+=1
    }
}
print(ans)

 

1은 소수가 아니랍니다....


괄호

import Foundation
let N = Int(readLine()!)!
for _ in 0..<N {
    var cnt = 0
    var ans = "YES"
    let str = readLine()!
    str.map {
        if $0 == "(" {
            cnt+=1
        } else if cnt<=0 { 
            ans = "NO"
        } else {
            cnt-=1
        }
    }
    if cnt != 0 { ans = "NO"}
    print(ans)
}

처음에는 배열을 새로 생성하여 여기에, "("을 담을까도 생각해보았으나, 결국 짝지어 제거될 수 있는 좌측괄호의 유무를 확인하는 과정에 필요한 데이터였기에, 좌측괄호의 개수를 추적하는 cnt Int변수로 이를 대체하여 구성하였다.

 

감사합니다.