⚙️ 알고리즘/백준 20

[백준/Swift] 1620 - 나는야 포켓몬 마스터 이다솜

문제 : https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 처음 풀이 : let input = readLine()!.split(separator:" ").map { Int(String($0))! } let N = input[0] let M = input[1] var dic:[Int:String] = [:] var answer:[String] = [] for i in 1...N { dic[i] = readLine()! ..

[백준/Swift] 2346 - 풍선 터뜨리기

문제 : https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 내 풀이 import Foundation let N = Int(readLine()!)! let input = readLine()!.split(separator:" ").map { Int(String($0))!} var q = (1...N).map { ($0, input[$0-1])} /* q는 아래와 같이 초기화하는 것도 가능함! (enumerated() 사용) 1) v..

[Swift] 백준 1080 - 행렬

문제 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 코드 let input = readLine()!.split(separator:" ").map { String($0) }.map{ Int($0)!} let N = input[0] let M = input[1] var A:[[Int]] = [] var B:[[Int]] = [] var cnt = 0 for _ in 0...N-1 { A.append(readLine()!.map { String($0) }.map..

[Swift] 백준 1541 - 잃어버린 괄호

문제 https://www.acmicpc.net/problem/1541 코드 var array = readLine()!.split(separator: "-").map { String($0) } array = array.filter { $0 != "" } //공백제거 var sum = 0 var count = 0 var sum_array:[Int] = [] for i in array { count = i.split(separator:"+").map { Int($0)!}.reduce(0, +) sum_array.append(count) } if sum_array.count == 1 { // "+"만 있는 경우 -> 위에서 array의 count가 1이기 때문에 더한 값이 있는 배열의 크기도 1임 print(..

[Swift] 백준 10610 - 30

문제 https://www.acmicpc.net/problem/10610 코드 let input = readLine()!.map{ String($0) } //쪼개서 정수 배열로 저장 var sum = 0 if !input.contains("0"){ print(-1) } else{ for i in input { sum += Int(i)! } if sum%3 == 0 { print(input.sorted(by: >).joined()) } else{ print(-1) } } 풀이 30의 배수임을 판별하기 위해서는 끝이 0이 아닌지와 각 자릿수를 더한 값이 3의 배수인지를 판별하면 된다. 따라서 input에 0이 들어가있지 않으면 30의 배수가 아니므로 바로 -1을 프린트해주었고, 다 더했을 때 3의 배수이면 ..

[백준/파이썬] 2869 - 달팽이는 올라가고싶다

풀이 처음에는 문제 자체를 이해하지못했다.. 예제 입력 1 2 1 5 예제 출력 1 4 예제 입력 2 5 1 6 예제 출력 2 2 예제 1번 같은경우엔 2m 올라가고 1m 내려갔는데 왜 5가 아니고 4인거지? 했는데 다시 생각해보니 3일 뒤에 달팽이는 3m까지 갈거고, 낮에 2m를 가면 바로 정상에 도착하므로 총 4일이 걸리는것이다. 예제 2번은 하루에 4m를 올라가고, 다음에 5m를 올라가는 과정에서 정상에 도착하므로 총 2일이 걸리는 것이다. 따라서 (정상 m-내려가는 m)를 (올라가는 m-내려가는 m)로 나눴을때의 나머지가 0이 아니면(올라가야하는 m가 남았으므로 하루가 더 필요한 것임) 몫+1, 0이 맞으면 정상까지 도달한 것이므로 몫이 정답이 되도록 로직을 짰다. import sys A, B, ..

[백준] 2217 - 로프 (다시풀기)

www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 1차 풀이) 일단 예시답안 자체가 이해가 안됐다.. 그래서 검색해서 찾았을때, suri78.tistory.com/29 이 블로그 글이 가장 이해가 잘되어서 예제를 이해한 뒤 아이디어를 떠올렸다. 위 페이지에서의 로프가 버틸 수 있는 중량이 각각 rope1 : 10, rope2: 15 일때 rope1을 사용한다면 rope2도 버틸 수 있으므로 최대 20을 버틸 수 있음. rope2를 사용한다면 rope1..

[백준] 11399 - ATM

www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 1차 풀이) 오름차순으로 정렬 후에 누적합으로 구하면 될듯..? N = int(input()) times = list(map(int, input().split())) result = 0 sum = 0 times.sort() for i in times: sum+=i result+=sum print(result)

[백준] 11047 - 동전 0

www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 1차 풀이) 직관적으로 생각했을 때 4200을 1000으로 나누고 그다음 100으로 나누게 되면 4+2 = 6번이 된다. 4790은 1000으로 4번 나누고 500으로 1번 100으로 2번 50으로 1번 10으로 4번 총 12번이 된다. 그럼 5000부터는 몫이 0이 되니까 이때 멈추고 그 전까지로 반복문을 돌려서 차례대로 나누어가면서 나누어 떨어..

반응형