https://www.acmicpc.net/problem/1654

불러오는 중입니다...

 

 

import Foundation
var highValue = 0
var lowValue = 1
let read = readLine()?.components(separatedBy: " ")
let read_K: Int = Int(read?[0] ?? "") ?? 0
let read_N: Int = Int(read?[1] ?? "") ?? 0
var arr: [Int] = Array<Int>(repeating: 0, count: read_K)
var result: Int = 0
//middle 값으로 개수 만큼 만들 수 있는지 조사.
func possible(middle: Int) -> Bool {
var cnt = 0
for i in 0..<read_K {
cnt += (arr[i] / middle)
}
if cnt >= read_N {
return true
}
return false
}
for i in 0..<read_K {
let readNum = Int(readLine() ?? "") ?? 0
arr[i] = readNum
highValue = max(highValue, readNum)
}
//이분탐색
while lowValue <= highValue {
let mid = (lowValue + highValue) / 2
if possible(middle: mid) {
if result < mid {
result = mid
}
lowValue = mid + 1
} else {
highValue = mid - 1
}
}
print(result)
view raw 1654.swift hosted with ❤ by GitHub

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

BOJ ) 1337번 올바른 배열 (Swift)  (0) 2020.03.24
BOJ ) 11399번 ATM (Swift)  (0) 2020.02.29
BOJ ) 1978번 소수 찾기(Swift)  (0) 2020.02.28
BOJ ) 1026번 보물 (Swift)  (0) 2020.02.28
BOJ ) 1920번 수 찾기 (Swiift)  (0) 2020.02.24

https://www.acmicpc.net/problem/1337

 

1337번: 올바른 배열

첫째 줄에 배열의 크기 N이 주어진다. N은 10,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 배열의 원소가 한 줄에 하나씩 주어진다. 원소는 1,000,000,000보다 작거나 같은 음이 아닌 정수이다. 두 개 이상의 원소가 같은 경우는 없다.

www.acmicpc.net

 

import Foundation
let read_N = Int(readLine() ?? "") ?? 0
var arr: [Int] = Array<Int>(repeating: 9987654321, count: 10001)
var arr_index = 0
var cnt = 1
var answer = 1
for i in 0..<read_N {
arr[i] = Int(readLine() ?? "") ?? 0
}
arr.sort()
for i in 1..<read_N {
cnt += 1
while arr[i] - arr[arr_index] > 4 {
cnt -= 1
arr_index += 1
}
answer = max(answer, cnt)
}
if answer > 5 {
answer = 5
}
print(5 - answer)
view raw 1337.swift hosted with ❤ by GitHub

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

BOJ ) 1654번 랜선 자르기 (Swift)  (0) 2020.03.26
BOJ ) 11399번 ATM (Swift)  (0) 2020.02.29
BOJ ) 1978번 소수 찾기(Swift)  (0) 2020.02.28
BOJ ) 1026번 보물 (Swift)  (0) 2020.02.28
BOJ ) 1920번 수 찾기 (Swiift)  (0) 2020.02.24

Level 1 -> Level2

다음 문제를 보면   '-'라는 파일 안에 다음으로 갈 수 있는 키가 있다고 한다.

역시 cat 명령어를 사용하여 열 수 있다.

(./를 꼭 붙여줘야함.)

 

Level2 -> Level3

다음은 폴더명에 ' ' 띄어쓰기가 들어간 폴더를 열어보는 문제이다.

'\ '를 사용하여 열어보면 쉽게 열린다.

Level3 -> Level4

숨겨진 파일을 여는 문제입니다.

Level4 -> Level5

-가 들어간 파일을 열어보는 문제입니다. '--'을 사용하여 열면 됩니다.

Level5 -> Level6

'WarGame > OverTheWire' 카테고리의 다른 글

OverTheWire Bandit Level0 / Level0 -> Level1  (0) 2020.03.02

Level0, Level0 -> Level1

 

SSH 명령어를 사용하여

username = bandit0

password = bandit0

bandit.labs.overthewire.org

port = 2220

접근 해본다.

password를 입력하면

접속이 가능하며 파일 목록에 readme를 열어보면 다음 단계의 비밀번호가 들어있다.

 

입력하고 들어가보면

위와 같은 화면을 볼 수 있을 것입니다.

'WarGame > OverTheWire' 카테고리의 다른 글

OverTheWire Bandit Level1 -> Level3  (0) 2020.03.02

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

아주 간단한 그리디 문제입니다. 

 

 

 

import Foundation
//매우 쉬운 그리디 알고리즘 입니다.
//작은 시간 순서대로 줄을 서서 현금을 인출하면 최소 시간이 됩니다.
let read_N: Int = Int(readLine() ?? "") ?? 0
let read_numbers = readLine()?.components(separatedBy: " ")
var numbers: [Int] = Array<Int>(repeating: 0, count: read_N)
for i in 0..<read_N {
numbers[i] = Int(read_numbers?[i] ?? "") ?? 0
}
//정렬을 사용하여 낮은 숫자가 제일 앞에오도록 합니다.
numbers.sort()
var answer: Int = 0
for i in 0..<numbers.count {
for j in 0...i {
answer += numbers[j]
}
}
print(answer)
view raw 11399.swift hosted with ❤ by GitHub

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

BOJ ) 1654번 랜선 자르기 (Swift)  (0) 2020.03.26
BOJ ) 1337번 올바른 배열 (Swift)  (0) 2020.03.24
BOJ ) 1978번 소수 찾기(Swift)  (0) 2020.02.28
BOJ ) 1026번 보물 (Swift)  (0) 2020.02.28
BOJ ) 1920번 수 찾기 (Swiift)  (0) 2020.02.24

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

소수에 대한 개념으로 푼 문제 입니다.

 

import Foundation
//소수는 1과 그 수 자신 이외의 자연수로는 나눌 수 없는 자연수.
func solution(number: Int) -> Int {
if number == 1 {
return 0
}else if number == 2 {
return 1
}
//2 이상 자신 미만의 수 중에 나누어 떨어지는 게 있으면 소수가 아니다
for i in 2..<number {
if number % i == 0 {
return 0
}
}
return 1
}
let N: Int = Int(readLine() ?? "") ?? 0
let read_Numbers = readLine()?.components(separatedBy: " ") ?? [""]
var ans: Int = 0
for i in 0..<N {
ans += solution(number: Int(read_Numbers[i]) ?? 0)
}
print(ans)
view raw 1978.cpp hosted with ❤ by GitHub

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

BOJ ) 1337번 올바른 배열 (Swift)  (0) 2020.03.24
BOJ ) 11399번 ATM (Swift)  (0) 2020.02.29
BOJ ) 1026번 보물 (Swift)  (0) 2020.02.28
BOJ ) 1920번 수 찾기 (Swiift)  (0) 2020.02.24
BOJ ) 9455번 박스 (Swift)  (0) 2020.02.17

https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.

www.acmicpc.net

 

import Foundation
//배열 A의 작은 값과 배열 B의 작은 값을 곱하면 그 합이 최소로 나온다.
func solution(A: [Int], B: [Int], N: Int) -> Int {
var answer: Int = 0
var arr_A = A
var arr_B = B
//A 배열 오름차순 정렬
arr_A.sort()
//B 배열 내림차순 정렬
arr_B.sort(by: >)
for i in 0..<N {
answer += arr_A[i] * arr_B[i]
}
return answer
}
let read_N: String = readLine() ?? ""
let N: Int = Int(read_N) ?? 0
var arr_A: [Int] = Array<Int>(repeating: 0, count: N)
var arr_B: [Int] = Array<Int>(repeating: 0, count: N)
let read_A = readLine()?.components(separatedBy: " ")
let read_B = readLine()?.components(separatedBy: " ")
for i in 0..<N {
arr_A[i] = Int(read_A?[i] ?? "") ?? 0
arr_B[i] = Int(read_B?[i] ?? "") ?? 0
}
let ans = solution(A: arr_A, B: arr_B, N: N)
print(ans)
view raw 1026.swift hosted with ❤ by GitHub

 

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

BOJ ) 11399번 ATM (Swift)  (0) 2020.02.29
BOJ ) 1978번 소수 찾기(Swift)  (0) 2020.02.28
BOJ ) 1920번 수 찾기 (Swiift)  (0) 2020.02.24
BOJ ) 9455번 박스 (Swift)  (0) 2020.02.17
BOJ ) 11403번 경로 (Swift)  (0) 2020.02.17

 

https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수들의 범위는 int 로 한다.

www.acmicpc.net

 

Binary Search를 사용해서 푸는 수 찾기 문제입니다.

 

import Foundation
func solution(numberArray: [Int], numToFind: Int) -> Int {
//Binary Search!
var left: Int = 0
var right: Int = numberArray.count - 1
while left <= right {
let middle = Int(floor(Double(left + right) / 2.0))
if numberArray[middle] < numToFind {
left = middle + 1
} else if numberArray[middle] > numToFind {
right = middle - 1
} else {
return 1
}
}
return 0
}
let N = Int(readLine() ?? "") ?? 0
var arr: [Int] = Array<Int>(repeating: 0, count: N)
var read = readLine()?.components(separatedBy: " ")
for i in 0..<N {
arr[i] = Int(read?[i] ?? "") ?? 0
}
arr.sort()
let M = Int(readLine() ?? "") ?? 0
read = readLine()?.components(separatedBy: " ")
for i in 0..<M {
let answer = solution(numberArray: arr, numToFind: Int(read?[i] ?? "") ?? 0)
print(answer)
}
view raw 1920.swift hosted with ❤ by GitHub

 

 

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

BOJ ) 1978번 소수 찾기(Swift)  (0) 2020.02.28
BOJ ) 1026번 보물 (Swift)  (0) 2020.02.28
BOJ ) 9455번 박스 (Swift)  (0) 2020.02.17
BOJ ) 11403번 경로 (Swift)  (0) 2020.02.17
BOJ ) 2908번 상수 (Swift)  (0) 2019.11.08

+ Recent posts