본문 바로가기

코딩 테스트/do it! 알고리즘 코딩테스트100

081 순열의 순서 첫번째 코드 이 문제는 순열의 문제이고 손으로 많이 풀어본 문제라고 생각이 들었다.하지만 코드로는 처음 접해봐서 코드는 책을 참고했다. 여기서 중요한 것은 소문제1, 2번 문제를 푸는 방법이다. 책에서는 아래와 같이 설명한다. 소문제11. 주어진 값(k)와 현재 자리(n)-1에서 만들 수 있는 경우의 수를 비교한다.2. 1에서 k가 더 작아질 때까지 경우의 수를 배수(cnt)로 증가시킨다.(순열의 순서를 1씩 늘림)3. k가 더 작아지면 순열에 값을 저장하고 k를 k-(경우의 수 * (cnt-1))로 업데이트 한다.4. 순열이 완성될 때까지 1~3을 반복하고 완료된 순열을 출력한다. 소문제21. 현재 자릿수의 숫자를 확인하고 해당 숫자보다 앞 숫자 중 미사용 숫자를 카운트한다.2. 미사용 숫자 개수 * .. 2024. 8. 20.
082 사전 첫번째 코드 이전의 조합 문제와 비슷한 문제지만,조합을 어떻게 꾸려 나가야할지에 대한 고민이 많이 필요할 것 같다. 코드는 책을 참고했고,헷갈렸던 부분은 m+n이 전체 개수임을 계속 까먹는 다는 것!! import sys input = sys.stdin.readline n, m, k = map(int, input().split()) dp = [[0 for _ in range(202)] for i in range(202)] for i in range(201):     for j in range(i+1):         if j == 0 or j == i:             dp[i][j] = 1         else:             dp[i][j] = dp[i-1][j] + dp[i-1][j-.. 2024. 8. 20.
080 조약돌 꺼내기 첫번쨰 코드 이번에는 단순하기 조합으로 풀기보다는 조금 더 생각해서점화식을 생각한 후에 해당 방법으로 코드를 작성해야 한다. 아이디어는 책과 동일하게 생각했지만,점화식을 코드로 구현하는 방법에서 책을 참고하였다. import sys input = sys.stdin.readline probability = [0] * 51 m = int(input()) colors = list(map(int, input().split())) total = 0 for i in colors:     total += i k = int(input()) answer = 0 for i in range(m):     if colors[i] >= k:         probability[i] = 1         for j in rang.. 2024. 8. 15.
079 다리 놓기 첫번째 코드 어차피 위>아래 순으로 연결될 예정이므로,단순히 m개 중 n개를 뽑는 경우의 수라고 생각하면 된다. 즉 처음에 생각한 조합의 코드를 참고하여 작성하면 된다!! dp 테이블 초기화 방법 생각 잘 하기!!- dp[i][1] = i- dp[i][0] = 1- dp[i][i] = 1 점화식 생각 잘 하기!!  dp[i][j] = dp[i-1][j] + dp[i-1][j-1]  import sys input = sys.stdin.readline question = int(input()) dp = [[0 for _ in range(31)] for _ in range(31)] for i in range(0, 31):     dp[i][1] = i     dp[i][0] = 1     dp[i][i] = .. 2024. 8. 15.
078 부녀회장이 될테야 첫번쨰 코드 이번에는 살짝 응용된 버전이었다.이정도는 단순하게 생각할 수 있는 느낌이지만, 더 많이 응용된다면... 으어 내 머리;그래도 일단 무서워하지 말고 풀어보장 코드는 책을 참고했다! import sys input = sys.stdin.readline dp = [[0 for _ in range(15)] for _ in range(15)] for i in range(1, 15):     dp[i][1] = 1     dp[0][i] = i for i in range(1, 15):     for j in range(2, 15):         dp[i][j] = dp[i][j-1] + dp[i-1][j] T = int(input()) for i in range(T):     k = int(input(.. 2024. 8. 13.
077 이항 계수 2 첫번째 코드 dp문제를 한번 풀었기 떄문에 이해와 코드 작성이 수월했다!! import sys input = sys.stdin.readline n, k = map(int, input().split()) dp = [[0 for _ in range(n+1)] for _ in range(n+1)] for i in range(0, n+1):     dp[i][1] = i     dp[i][0] = 1     dp[i][i] = 1 for i in range(2, n+1):     for j in range(1, i):         dp[i][j] = dp[i-1][j] + dp[i-1][j-1]         dp[i][j] = dp[i][j] % 10007 print(dp[n][k]) 통과!링크https:/.. 2024. 8. 13.
728x90