수 정렬하기 2 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB 203223 57808 39987 30.397%

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

예제 입력 1 복사

5
5
4
3
2
1

예제 출력 1 복사

1
2
3
4
5

출처

코드

import Foundation

let N = Int(readLine()!)!
var arr = [Int]()

for _ in 0..<N {
    arr.append(Int(readLine()!)!)
}

var resArr = arr.sorted()

for i in 0..<N{
    print(resArr[i])
}

'iOS > 백준' 카테고리의 다른 글

Swift 백준 10854번) 큐  (0) 2022.08.15
Swift 백준 1920번) 수 찾기  (0) 2022.08.10
Swift 백준 10989번) 수 정렬하기 3  (0) 2022.08.09
Swift 백준 2231번) 분해합  (0) 2022.08.08
Swift 백준 10828번) 스택  (0) 2022.08.05

수 정렬하기 3 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
5 초 (하단 참고) 8 MB (하단 참고) 181655 42018 31577 23.468%

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

예제 입력 1 복사

10
5
2
3
1
4
2
3
5
1
7

예제 출력 1 복사

1
1
2
2
3
3
4
5
5
7

출처

  • 문제를 만든 사람: baekjoon
  • 데이터를 추가한 사람: cgiosy
  • 문제의 오타를 찾은 사람: joonas

 

코드

import Foundation

let N = Int(readLine()!)!
var arr = [Int]()

for _ in 0..<N {
    arr.append(Int(readLine()!)!)
}

var resArr = arr.sorted()

for i in 0..<N{
    print(resArr[i])
}

당연히 sort를 사용하여 푸는 문제라고 접근하여서 풀었더니 시간초과만 주구장창 나왔다...

N의 범위가 N(1 ≤ N ≤ 10,000,000) 이니 입력을 받을때와 print를 할때 시간이 오래걸리는것을 알았지만~

그다음은 생각을 못하였다..

 

https://gist.github.com/JCSooHwanCho/30be4b669321e7a135b84a1e9b075f88

 

ps할 때 입력을 한꺼번에 받기 위한 유틸리티 클래스. fread의 swift 버전.

ps할 때 입력을 한꺼번에 받기 위한 유틸리티 클래스. fread의 swift 버전. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

검색후 입력을 야무지게 받을수 있는것을 찾았고..(정말 감사합니다 ㅠㅠ)

새로운 결과 배열을 추가하지않고 String에 줄바꿈을 하며 +하기로 하였다.

 

최종코드

import Foundation

final class FileIO {
    private let buffer:[UInt8]
    private var index: Int = 0

    init(fileHandle: FileHandle = FileHandle.standardInput) {
        
        buffer = Array(try! fileHandle.readToEnd()!)+[UInt8(0)] // 인덱스 범위 넘어가는 것 방지
    }

    @inline(__always) private func read() -> UInt8 {
        defer { index += 1 }

        return buffer[index]
    }

    @inline(__always) func readInt() -> Int {
            var sum = 0
            var now = read()
            var isPositive = true

            while now == 10
                || now == 32 { now = read() } // 공백과 줄바꿈 무시
            if now == 45{ isPositive.toggle(); now = read() } // 음수 처리
            while now >= 48, now <= 57 {
                sum = sum * 10 + Int(now-48)
                now = read()
            }

            return sum * (isPositive ? 1:-1)
        }
}

let file = FileIO()

let N = file.readInt()
var arr = Array(repeating:0,count:10001)

for _ in 0 ..< N {
    let i = file.readInt()
    arr[i] += 1
}

var res = ""

for i in 1...10000 {
    res += String(repeating:"\(i)\n",count:arr[i])
}
print(res)

'iOS > 백준' 카테고리의 다른 글

Swift 백준 1920번) 수 찾기  (0) 2022.08.10
Swift 백준 2751번) 수 정렬하기 2  (0) 2022.08.09
Swift 백준 2231번) 분해합  (0) 2022.08.08
Swift 백준 10828번) 스택  (0) 2022.08.05
Swift 백준 4153번) 직각삼각형  (0) 2022.08.05

분해합 성공다국어

한국어   
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 192 MB 96282 44135 34850 45.436%

문제

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.

자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

출력

첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.

예제 입력 1 복사

216

예제 출력 1 복사

198

코드

import Foundation

let N = Int(readLine()!)!
var res = 1

for i in 0 ..< N{
    var temp = i
    var sum = 0
    while( temp != 0){
        sum += temp % 10
        temp /= 10
    }
    if (sum + i == N){
        res = i
        break
    }
}
print(res)

출처

ICPC > Regionals > Asia Pacific > Korea > Asia Regional - Seoul 2005 B번

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

'iOS > 백준' 카테고리의 다른 글

Swift 백준 2751번) 수 정렬하기 2  (0) 2022.08.09
Swift 백준 10989번) 수 정렬하기 3  (0) 2022.08.09
Swift 백준 10828번) 스택  (0) 2022.08.05
Swift 백준 4153번) 직각삼각형  (0) 2022.08.05
Swift 백준 1259번) 팰린드롬수  (0) 2022.08.05

+ Recent posts