본문 바로가기

Algorithm236

Swift) 백준 2447번(분할정복) 요구능력 : 분할정복방법을 사용할 줄 아느냐.. 코드설명 : 우선 빈 문자열을 선언하고 계속 추가한 이유를 말하자면 처음에는 프린트를 썻었는데 계속 시간초과가 나왔다. 프린트를 많이 쓸 수록 시간이 오래걸린다는걸 깨달았다!! 이렇게 하나 배우는구나.. 우선, 분할정복알고리즘이라는걸 알고있어야 이 문제에 접근하기 쉽다. 이 문제에서 분할정복알고리즘이 필요한 이유는 작은 별모양과 같은 규칙을 가진 큰 별모양을 만드는 것이기 때문이다. 자, 이제 설명을 해보자면 n = 3 일 때를 봅시다. 맨 왼쪽 위를 기준으로 (1,1)에 빈칸이있다. 이제 n = 9 일 때를 봅시다. 뭔가 상당히 비슷합니다. 이제 n = 27 일 때를 봅시다. 이제 공통점을 아시겠나요? 그림을 자세히 보시면 n = 27일 때는 n = 9 .. 2021. 8. 3.
Swift) 백준 10870번 요구능력 : 함수내에서 함수를 호출할수 있는걸 아느냐(?) 코드설명 : 0일때는 0을 리턴, 1일때는 1을 리턴, 필요한건 피보나치의 n의 값이니까 n-1과 n-2를 더해주면 n의값이 나오니까 리턴 후기 : 무난하게 풀린문제.. let n = Int(readLine()!)! func pibo(_ n: Int) -> Int{ if n == 0 { return 0 }else if n == 1 { return 1 } return pibo(n-1) + pibo(n-2) } print("\(pibo(n))") 2021. 8. 2.
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.