본문 바로가기

백준177

[Swift][Stack] 백준 10828번 (스택) 요구능력 : 스택의 이해 코드설명 : 스택은 LIFO방식으로 작동한다. 마지막에 들어간게 먼저나오는 것이다. 헬스장에서 원판꽂는게 스택이라고 보면된다. 그냥 배열에 append하고 popLast하는게 스택이다. 후기 : 여기저기서 스택에 대한 이론은 귀에 딱지가 앉도록 들었다.. var stack:[Int] = [] let n = Int(readLine()!)! for _ in 1...n { let a = readLine()!.split(separator: " ").map{String($0)} switch a[0] { case "push": push(Int(a[1])!) break case "pop": print(pop()) break case "size": print(size()) break case .. 2021. 9. 9.
[Swift][BruteForce] 백준 3085번 (사탕게임) 요구능력 : 찐노가다 코드설명 : 전체적인 코드 설계는 아래와 같다. (조건 : 현재 i 인덱스 에서 다음번 인덱스의 사탕이 현재와 같은지) 1. 가로바꾸기 2. 가로, 세로 중에 사탕의 최대개수 구하기 3. 가로되돌려놓기 (조건 : 현재 i 인덱스 에서 다음번 인덱스의 사탕이 현재와 같은지) 1. 세로바꾸기 2. 가로, 세로 중에 사탕의 최대개수 구하기 3. 세로되돌려놓기 이해가 안가는 부분이 있으신분은 댓글 적어주시면 아는대로 답변드리겠습니다. 후기 : 세상에.. 이 문제를 진짜 어렵게 풀었다.. 설계의 중요성을 다시금 깨닫는다. 풀때는 이게 대체 왜 실버4인가 싶었는데 풀고나니까 그냥 개념적용하는거 1개도없이 노가다로만 풀 수 있어서 실버4구나 싶다. 예제에 있는 부분은 다맞는데 계속 5%~6%에서.. 2021. 9. 9.
[Swift][DP] 백준 2193번 (이친수) 요구능력 : DP를 알고 있느냐 코드설명 : 우선 dp로 풀게된 이유는 DP파트에 있어서 규칙을 찾아보니까 연속되는 부분문제가 있었고 쭉 연관되었다. 문제에 나온 규칙대로 N = 5일 때 까지 나열해보자. N = 1 1 N = 2 10 N = 3 100 101 N = 4 1000 1001 1010 N = 5 10000 10001 10010 10100 10101 여기서, 중요한점은 당연한 부분을 제외하고 보면 답이 나온다는 것이다. 규칙을 보면 앞에 0이 나오면 안되고 1은 연속되면 안된단다. 그럼 맨앞에 10은 고정이다. 10을 고정하고 뒤에 수를 보자. N = 3일때 까지는 사실상 규칙이 없어서 코드에 dp[3]까지 정의해줬어야 하는데, 어차피 답나와서 그냥 싸잡아서 for문에 넣었다. N = 4 10.. 2021. 9. 7.
[Swift][Deque] 백준 10866번 (덱) 요구능력 : 덱(Deque) 코드설명 : 덱을 구현하였다. 후기 : 큐와 많이 비슷하다. let n = Int(readLine()!)! var deque: [Int] = [] func push_front(_ x: Int) { if deque.isEmpty { deque.append(x) }else { deque.reverse() deque.append(x) deque.reverse() } } func push_back(_ x: Int) { deque.append(x) } func pop_front() -> Int { if deque.isEmpty { return -1 }else { return deque.removeFirst() } } func pop_back() -> Int { if deque.isEm.. 2021. 9. 1.