분류 전체보기 181

swift ) 백준 2004 조합 0의 개수

기본적인 로직은 입력받은 수로 조합을 만들건데 인수 중 10의 개수만큼이 끝자리의 0의 개수일 것이다. 라는 가정에서 시작한다 10의 약수는 2,5이므로 입력받은 수의 인수 중 2,5를 약수를 갖는 경우들에서 개수를 세어주면 되는데.. 여러 가지 방법으로 제출하고 시간초과, 틀림 다 맞아본 결과... 1. 5로 곱해지는 개수만 생각하면 --> 틀림 팩토리얼에서 0의 개수 (백준 1676) 문제에서는 하나의 숫자에 대해서만 구하는 부분이여서 5로 곱해지는 개수만 고려하면 되었는데 (2의배수가 무조건(?) 더 많기 때문) 이 문제는 조합 nCm이기 때문에 똑같이 생각해서 풀면 틀린다. 반례로, 5C4의 경우가 있다. 5C4 = 5 이기 때문에 0이 출력되어야 하는데, 5의 개수만 고려해서 코드를 짜면 1이 ..

swift ) 백준 9375 - 패션왕 신해빈

해당 문제의 알고리즘은.. 경우의 수를 생각하면 된다 딕셔너리를 사용했는데, 키 값은 딱히 상관없고.. 밸류 값을 카운트해주어서 경우의 수를 계산했다. 문제에서 주어진 첫 번째 예제로 살펴보면, 1. headgear : hat, turban eyewear : sunglasses -- headgear를 쓰는 경우의 수 = 3 (hat / turban / x) eyewear를 쓰는 경우의 수 = 2 (sunglasses / x) 각각의 값을 곱한 뒤, 1을 빼준다. (문제의 조건에서 알몸이 아니어야 한다고 했으므로 모두 x인 경우 1개를 제외해야 한다.) 그리고 주의해야할 점은 n에 0이 올 수 있다는 것. 항상 느끼지만 잘 지켜지지 않는 것이... 문제를 잘 읽어야 하는 것 같다. 진짜 아무것도 아닌 부분..

swift ) 백준 1010 다리놓기

마찬가지로 조합 문제 파스칼의삼각형을 재귀함수로 만듬 // 1010 다리놓기, 파스칼의 삼각형 이용 let caseNum = Int(readLine()!)! var resultArr = Array(repeating: Array(repeating: 0, count: 31), count: 31) for _ in 1...caseNum { let input = readLine()!.split(separator: " ").map{Int(String($0))!} print(getCombination(input[1], input[0])) } func getCombination (_ a:Int, _ b:Int) -> Int { if a == b || b == 0 { return 1 } if resultArr[a][b]..

swift ) 11051 이항계수2 - 런타임에러 해결..

처음에 생각했던건 factorial 함수를 만들어서 사용하는 것이었다. 응.....망함.. 이항계수와 관련된 파스칼의 삼각형의 성질 중 하나를 사용해서 코드를 작성했다. 처음엔 어떻게 작성하나 막막했는데 2d array로 만들었음 1. factorial 함수 이용 -> 런타임 에러 (망한코드) 더보기 정확한 원인은 모르겠지만 N이 무려 1000까지 올 수 있기 때문에 팩토리얼을 구하는 과정에서 수가 너무 커져서 오버플로우 발생한 것으로 추정됨. 정답 뜨고나서 다른 사람들이 정답으로 인정된 코드도 확인했는데, 팩토리얼을 사용한 사람은 없었고 모두 파스칼 삼각형을 이용한 것으로 보아 팩토리얼을 사용하면 무조건 오버플로우가 발생하는 것 아닐까 사료됨 let input = readLine()!.split(sep..

github - fatal: in unpopulated submodule 해결

내 경우엔 올리고자 하는 하위폴더에 이미 .git이 생성되어 있어서 .git 폴더를 지웠을 경우 메인폴더에서(?) 커밋이고 뭐고 안됐다 아래 방법대로 따라하니 해결되었음 터미널에서 깃 다루는 경우에 해당됨 1. Remove all .git folder inside the sub directory causing the error 2. cd to the main directory 3. git rm --cached sub_directory_name -f 4. git add --all to add the subdirectory and contents, recursively 5. git status to verify that the items are added

잡다한 팁 2022.04.26

swift ) 백준 11050 이항계수1

어......... 이항계수를 먼저 알아보면, 더보기 '이항계수 : 이항식을 이항정리로 전개했을 때 각 항의 계수' 인데... 사실 우리가 알고있는 '조합'과 같다. => n개의 원소를 가지는 집합에서 k개의 부분집합을 고르는 경우의 수 라는 사전적 정의를 갖는다. 또한, nCk = nC(n-k) 라는 성질을 갖는다. 이제 위의 식을 참고해서 코드로 구현만 해주면 끝 // 11050 이항계수1 let input = readLine()!.split(separator: " ").map{Int(String($0))!} let result = getFactorial(input[0]) / (getFactorial(input[1])*getFactorial(input[0]-input[1])) print(result)..