목록알고리즘 (9)
leeyang의 개발 성장기
브루트포스란게 무엇인지 까먹어서.... 백준의 유형별에서 브루트 포스를 검색해보았다 브루트포스란? 가능한 모든 경우에 대해 모두 직접 해 보는 방법 입니다. 결국.. 다 해보기? 이니까 오히려 빠르게 감을 잡기 쉽다 생각하였다. 하지만 ㅠㅠ 처음에 체스판을 쪼갠다는걸 잘 못 이해해서 올바른 결과값을 만든 후 비교를 했었다가. 결국 전체에서 뺴는걸로 하였다. 줄과 열의 합이 짝수이면 B, 아니면 W인걸 이용하여 비교한다. let input = readLine()!.split(separator: " ").map(){Int($0)} let array1: Int = (input.first ?? 8) ?? 8 let array2: Int = (input.last ?? 8) ?? 8 var result: [Int]..
let n = Int(readLine() ?? "0") ?? 0 var array: [Int] = [] for _ in 1...n { let input = readLine()!.split(separator: " ").map(){String($0)} if input.first == "push" { array.append(Int(input.last ?? "0") ?? 0) } else if input.first == "top" { print(array.last ?? -1) } else if input.first == "size" { print(array.count) } else if input.first == "pop" { print(array.popLast() ?? "-1") } else if input...
문제 n은 stage 개수 stages은 게임 도달한 사람들의 도달한 stage 그러므로 총 유저 수는 stages array에 count이다. 실패율 : 해당인원수 / 전체인원수 게임이기 때문에 전체 사용자가 10명이라면, 1단계인 사람이 2명이면 2단계에서 전체 사람수는 전체 - 1단계사람수 그러므로 실패율에서 구하는 전체인원수는 전체유저수 - 전단계 사용자수 주의) 나눗셈이기 때문에 0으로 나누면 안된다. CODE import Foundation let N = 4 let stages = [4,4,4,4] func solution(_ N:Int, _ stages:[Int]) -> [Int] { guard N >= 1 && N s2.1 }) var resultArray = [Int]() for elem..
입력값은["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"] 로 사용자의 동작 상태: 들어오기 / 떠나기 / 닉 바꾸기 와 유니크한 userid, 그에 따른 닉네임이다. 유니크한 id에 따라 상태를 나누어야 함으로 입력 받은 값을 두 개의 컬렉션 타입에 데이터를 저장했다. (테이블 개념으로 접근) historyArray와 nickName Dictionary로 구분. Dic를 사용한 이유는 key에 따른 value인 별명을 update 해야하므로 CODE 다른 사람들의 풀이를 본 후 스스로의 평가 1. Dictionary를 떠올리지 못했다는 점 2. Enum을 사용하여 ..
주어진 n개의 숫자 중 소수 판별 소수 : 자신과 1 외의 약수가 없는 수를 소수, 1은 소수가 아니다. 즉 주어진 수에서 다 나누어봐야 소수 인지 판단이 가능하다. Code
테스트 케이스로 규칙을 찾아보자. 10번째 손님의 방은? 101, 201, 301, 401, 501, 601 102, 202, 302, 402 --> 10번째! 즉, 궁금한 n 번째 손님은 H를 기준으로 몫과 나머지로 생각하면 된다. 10/6 = 1 (a)... 4 (b) 402호 => b0(a+1)호 나머지이기 때문에, 꼭대기일때를 고려하고, 일의자리가 10이상인지만 여부를 확인하면 된다 Code
테스트 케이스로 상황을 생각해봅니다. day 1. 낮, 달팽이는 2 미터 올라갑니다. 밤, 자면서 내려가서 최종 1미터 day 2. 낮, 달팽이는 1 -> 3으로 올라갑니다. 밤, 자면서 내려가서 최종 2미터 day 3. 낮, 달팽이는 2 -> 4로 올라갑니다. 밤, 자면서 내려가서 최종 3미터 day 4. 낮, 달팽이는 3 -> 5로 올라갑니다. 목표도달! 즉, 낮의 올라가는 길이까지 필요하며 밤에 내려가는 길이가 필요하지 않습니다. 이 상황을 수식으로 표현해보면 D: day의 약자 V = D(A -B) + B 우리가 구하려는 기준은 Day이기때문에 day의 기준으로 식을 고쳐봅니다. D = (V - B) / (A - B) Code 도착이 딱 맞을 시 하루가 더 필요없지만 모자를 시 필요하기에 하루를 ..