본문 바로가기

백준177

Swift) 백준 1712번 요구능력 : 수학적으로 풀 생각을 할 수 있느냐 코드설명 : A는 고정비용, B는 가변비용, C는 노트북판매가격이다. 식을 적어봤는데 A + (B * ?) = C * ? 이면 총 수입과 총 이익이 같아지는것 이다. 처음에 해본거 while totalSell > totalInput { count += 1 totalSell = A + (B * count) totalInput = C * count } 이거 해보니까 너무 오래걸린다. 21억까지 끝날기미가안보인다. 그래서 다음으로 생각한거 수학적으로 풀어봐야겠다. 참고로 x는 노트북 판매대수이다. A + Bx = Cx -> A + (B - C)x = 0 -> A = (C - B)x -> A / (C - B) = x 위에서 count를 반복문으로 구하던걸 x로 구.. 2021. 8. 3.
Swift) 백준 2447번(분할정복) 요구능력 : 분할정복방법을 사용할 줄 아느냐.. 코드설명 : 우선 빈 문자열을 선언하고 계속 추가한 이유를 말하자면 처음에는 프린트를 썻었는데 계속 시간초과가 나왔다. 프린트를 많이 쓸 수록 시간이 오래걸린다는걸 깨달았다!! 이렇게 하나 배우는구나.. 우선, 분할정복알고리즘이라는걸 알고있어야 이 문제에 접근하기 쉽다. 이 문제에서 분할정복알고리즘이 필요한 이유는 작은 별모양과 같은 규칙을 가진 큰 별모양을 만드는 것이기 때문이다. 자, 이제 설명을 해보자면 n = 3 일 때를 봅시다. 맨 왼쪽 위를 기준으로 (1,1)에 빈칸이있다. 이제 n = 9 일 때를 봅시다. 뭔가 상당히 비슷합니다. 이제 n = 27 일 때를 봅시다. 이제 공통점을 아시겠나요? 그림을 자세히 보시면 n = 27일 때는 n = 9 .. 2021. 8. 3.
Swift) 백준 10872번 요구능력 : 재귀함수를 쓸줄아느냐 코드설명 : 숫자를 받아서 for문으로 돌렸따.. 후기 : 단원명이 재귀함수인데 for문을 써서 풀다니... 뭔가 이상해서 구글링 해봤는데 대부분 재귀함수로 풀었더라.. 1학년 C언어 배울때 공부했던 기억이... let N = Int(readLine()!)! var result = 1 factorial(N) func factorial(_ N:Int) { if N == 0 { print("\(result)") return } for i in 1...N { result = result * i } print("\(result)") } 코드설명 : 간단해서 따로 할 필요는 없을거 같고,, 재귀함수는 함수안에서 같은 함수를 재귀적으로 호출하는거다. 예를들어 아래 코드에서 N이 5.. 2021. 7. 31.
Swift) 백준 1316번 요구능력 : Character 배열의 활용 코드설명 : arr 배열에 받은 문자를 하나씩 넣어주면서 기존에 나왔던건지 아닌지를 판별하고 연속된것을 처리해주었다. 그리고 Bool을 활용하여 그룹단어이면 count를 해주었다. 후기 : 이 문제를 보고 생각한거 2가지를 중심으로 풀어나갔다. 1) 기존에 나왔던게 뒤에 나오는지 확인해야 된다. 2) 그 안에서 뒤에 나온게 연속된건지 아닌지를 판별해야 한다. let n = Int(readLine()!)! var count = 0 for _ in 0.. 2021. 7. 31.