본문 바로가기

ios122

Swift) 백준 7568번 (덩치) 요구능력 : 경우의수를 전부 따질줄 아느냐 코드설명 : 1. 2차원 배열을 생성한다.(x, y)형식으로 받기위해 [[0, 0], [0, 0]] 이런 형식으로 생성함.(겉에 2차원은 n개, 안에 1차원 배열은 2개만) 2. 랭킹을 저장할 배열을 생성하고 1씩 넣어놓는다. 3. n개만큼 1차원 배열을 받아서 2차원 배열에 넣는다. 4. 자기자신까지 포함해서 경우의 수를 전부 돌려본다. 자기자신까지 포함해서 돌려보는이유? 어차피 몸무게와 키 둘 다 작아야지 순위가 뒤로 밀려나기 때문에 몸무게와 키가 같은건 상관없기 때문에.. 굳이 자기자신을 빼서 머리를 더굴릴 필요는 없다. 5. terminator를 띄어쓰기로 배열을 하나씩 출력한다. 후기 : 무난하게 전체경우의수를 따져본다고 생각하며 풀었다. let n =.. 2021. 8. 19.
Swift) 백준 2231번 (분해합) 요구능력 : 경우의수를 전부따지는 브루트포스 알고리즘에 대해 알고있느냐 코드설명 : 우리가 구하고자 하는 수는 n이 256이면 256의 생성자 245이다. 245가 생성자인 이유는 245 + 2 + 4 + 5 = 256 이기 때문이다. 1. n으로 생성자를 구할 수를 받는다. 2. 1 ~ n 까지 수를 245 + 2 + 4 + 5 = 256 이 방법으로 n이 되는 경우를 찾기위해 쭉 돌린다. 3. 드디어 생성자구하는 방법으로 i로 인해 생성자가 구해지면 (sum == n이 되면) i가 생성자 수가되니까 출력해준다. break해주는 이유는 가장작은 생성자를 구하라고 했기 때문이다. 맨 처음에 sum == n이 성립되면 그게 가장작은 수이다. 4. 만약 sum == n이 성립되지 않으면 생성자가 없다는 말이.. 2021. 8. 18.
Swift) 백준 2798번 (블랙잭) 요구능력 : 경우의수를 전부따지는 브루트포스 알고리즘에 대해 알고있느냐 코드설명 : 입력받은 n개의 수를 모두 더해보면서 m을 넘지않고, 현재 더한 3개의 수가 이전에 구한 sum보다 크다면, 이전에 구한 sum보다 m의 값에 가깝다는 의미이므로 이 때, sum변수에 넣도록 하였다. 후기 : 브루트포스라는 이름이 어려운 알고리즘인줄 알았는데 그냥 단순한 모든경우의수를 따져보는 알고리즘이었다.. let arr = readLine()!.split(separator: " ").map{ Int($0)! } let n = arr[0] let m = arr[1] var suArr = readLine()!.split(separator: " ").map{Int($0)!} var sum = 0 for i in 0.. 2021. 8. 18.
Swift) 백준 11729번 (하노이 탑) 요구능력 : 재귀함수를 응용할 수 있느냐 코드설명 : 우선, 몇번 왔다갔다했는지 봐야되는데 그럼 count같은 변수를 넣어서 세봤자 소용이 없다. 규칙을 찾아보면 (2의 n승) -1을 하면 이동횟수가 나오게 된다. hanoi 함수의 인자 n은 우리가 입력받는 수, start는 첫번째 장대, mid는 두번째 장대, end는 세번째 장대이다. 첫번째 하노이 함수는 n-1 개의 원판을 2번째 장대로 옮기는것 두번째 하노이 함수는 남은 1개의 맨 마지막 원판(n이 3이면 3짜리원판)을 3번째 장대로 옮기는것 세번째 하노이 함수는 2번째 장대에 놓은 n-1개의 원판을 3번째 장대로 옮기는것 자세한건 저도 완벽하게 이해 못했기 때문에 디버깅보고 재귀함수라도 이해하고 가세용..(악필 이해 좀 해주세요ㅎ..) 후기 :.. 2021. 8. 17.