[Swift] 백준 배열 문제들

2024. 6. 14. 16:11·코테/Swift

● 10818

import Foundation

let count = Int(readLine()!)!
let arrays = readLine()!.split(separator:" ").map { Int( String($0) )! }

let max = arrays.max()!
let min = arrays.min()!

print("\(min) \(max)")

 

readLine()!.split(separator: " ")의 결과 타입은 [String] 이 아니라 [String.SubSequence]임. 

SubSequence는 Collection 타입에서 어떤 것의 부분을 나타내는 타입임

Int타입으로 변환할 때, String.SubSequence -> Int 보다 String.SubSequence -> String -> Int의 수행속도가 더 빠르다고 함

 

● 2562

import Foundation

var nArray = Array<Int>()
for i in 0..<9 {
    let num = Int(readLine()!)!
    
    nArray.append(num)
}

let maxValue = nArray.max()!
let maxIndex = nArray.firstIndex(of:maxValue)! + 1

print("\(maxValue)\n\(maxIndex)")

 

배열에서 인덱스 알아내기 : array.firstIndex(of:찾고자 하는 변수) 또는 array.firstIndex { $0 == 찾고자하는 변수 }

참고로 결과는 옵셔널껍데기이기 때문에 뒤에 느낌표 붙여야 Int형으로 나옴!!

 

● 2577

import Foundation

var result = 1

for i in 0..<3 {
   result = result * Int(readLine()!)! 
}

var arr = Array(String(result))

for i in 0...9 {
    let filterArr = arr.filter { Int(String($0))! == i }
    print(filterArr.count)
}

 

String을 배열로 만드는법: Array(문자열)

 

● 3052

import Foundation

var arr = [Int]()

for i in 1...10 {
    let num = Int(readLine()!)! % 42
    if arr.contains(num) == false {
        arr.append(num%42)
    }
}

print(arr.count)

 

이것보다 더 좋은 다른 사람의 코드를 찾았다. 

나는 아무 생각없이 Array를 썼는데 그냥 arr타입을 Set으로 하면 비었는지 검사할 필요가 없는것(set은 중복허용하지 않으니까..)

 

var result = Set<Int>()

for _ in 0..<10 {
    result.insert(Int(readLine()!)! % 42)
}

print(result.count)

 

----> 이렇게 간단한 방법이 있다..ㅎㅎ

 

● 1546

import Foundation

let testCase = Int(readLine()!)!
let testArr = readLine()!.split(separator: " ").map { Int(String($0))! }

var resultArr = [Double]()

for i in testArr {
    let newScore: Double = Double(i) / Double(testArr.max()!)
    resultArr.append(newScore*100.0)
}

print(resultArr.reduce(0.0,+)/Double(testCase))

 

배열에서 합을 구하고 싶으면 reduce활용 : arr.reduce(0,+) 또는 arr.reduce(0){ $0 + $1 }

 

● 8958

import Foundation

let counts = Int(readLine()!)!
var arrs = [String]()

for i in 0..<counts {
    var results = readLine()!.split(separator: "X").reduce(0) { $0 + ($1.count) * ($1.count+1) / 2 }
    print(results)
}

 

풀다가 아무래도 비효율적으로 푸는 것 같아서..찾아봤더니 고차함수에다 등차수열까지 깔쌈하게 썼더라..현타 오는군

세상에는 똑똑한 사람이 참 많다....

고차함수를 잘 사용해야할듯....

 

●4344

import Foundation

let cases = Int(readLine()!)!

for _ in 0..<cases {
    let input = readLine()!.split(separator:" ").map { Int(String($0))! }
    let student = input[0]
    let score = input[1...student]
    let ave = score.reduce(0) { $0 + $1 } / student
    let good = score.filter { $0 > ave }.count
    let biyul = Double(good) / Double(student) * 100
    print("\(round(biyul * 1000) / 1000)%")
}

 

고차함수를 넣어서 풀었지만..뭔가 코드가 깔끔하지 않다.

중요한건 반올림인데 예를 들어

소수점 4번째 자리에서 반올림할 경우 1,000을 곱하여 반올림 후 다시 1,000을 나눠주면 된다.(=반올림해서 3번째 자리까지 출력)

소수점 6번째 자리에서 반올림할 경우 100,000을 곱하여 반올림 후 다시 100,000을 나눠주면 된다.(=반올림해서 5번째자리까지 출력)

참고로

let digit: Double = pow(10, 3) // 10의 3제곱

 

이렇게 하면 더 편할듯요

728x90
저작자표시 (새창열림)

'코테 > Swift' 카테고리의 다른 글

[Swift] 백준 알고리즘 - 요세푸스문제(1158)  (0) 2024.06.06
[Swift] 백준 알고리즘 - 키로거(5397)  (1) 2024.06.06
[Swift] 백준 알고리즘 - 에디터(1406)  (0) 2024.06.06
[Swift] 백준 알고리즘 - 방 번호(1457)  (2) 2024.06.06
[Swift] 백준 알고리즘 - 숫자의 개수(2577)  (2) 2024.06.06
'코테/Swift' 카테고리의 다른 글
  • [Swift] 백준 알고리즘 - 요세푸스문제(1158)
  • [Swift] 백준 알고리즘 - 키로거(5397)
  • [Swift] 백준 알고리즘 - 에디터(1406)
  • [Swift] 백준 알고리즘 - 방 번호(1457)
코딩하는빵친자
코딩하는빵친자
안녕하세요 코딩하는 빵친자입니다. 말그대롭니다.
  • 코딩하는빵친자
    코딩하는 빵친자의 블로그
    코딩하는빵친자
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 개발일기 (41)
        • Python (9)
        • Swift (2)
        • DataBase (0)
        • 알고리즘 (0)
        • IOS (30)
      • 데보션 영 (4)
      • 코테 (10)
        • Swift (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    delegate패턴
    추적권한
    제스처인식
    podinstall오류
    universalapp
    arm7
    아웃링크
    ios개발
    ios스와이프
    buildsetting
    뷰관련메서드
    Rosetta
    pod
    IOS
    xcode
    uipangesture
    uikit
    SWIFT
    settransition
    podlock
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는빵친자
[Swift] 백준 배열 문제들
상단으로

티스토리툴바