목록순열 (8)
개발 무지렁이
피로도 / 완전탐색 순열 🍔 🎠. 'itertools 모듈'을 이용해 'permutations()' 메서드를 이용할 줄 알아야 한다 => '순열' 🎠. 'max() 빌트인 함수'를 이용해 '현재값'을 '이전값'과 비교해서, 큰 값을 '이전값'으로 넣어서 '최대값'을 찾는다. import itertools def solution(k, dungeons): length = len(dungeons) # 순열 res = itertools.permutations(dungeons, length) perm = list(res) # print(perm) prev = 0 for case in perm: fat..
소수찾기 / 순열 🍔 🎠. 'itertools 모듈'을 이용해 'permutations()' 내장 메서드를 이용할 줄 알아야 한다. => '순열' 🎠. '리스트'를 '문자열'로 변환할 줄 알아야 한다. => ' "".join(list) ' 🎠. 리스트의 '중복을 제거'하는 방법을 알아야 한다 => 'dict.fromkeys(list)' 🎠. '소수 찾는 알고리즘'을 구현할 줄 알아야 한다 => '에라토스테네스의 체' import itertools import math def is_prime(num): end = int(math.sqrt(num)) for i in ..
야구 🪅. 반복문을 돌릴때마다 조건에 맞는 '초기화'를 했는가? => 다음 반복에 영향을 주지 않게 🪅. 일의 순서를 따질 때, '완전탐색 순열'을 생각해서 구현할 수 있는가? => '백트래킹' 🪅. 순열의 '작업'과 문제 조건에 맞는 '로직'을 '분리'시켰는가 => 하나의 메서드는 '하나의 기능'만을 수행 🪅. '전역변수'의 사용을 남용하지 않았는가? => '하나의 메서드 안'에서만 로직에 사용되는 데이터는 '지역변수'에 대입 import java.io.BufferedReader; import java.io.IOException; import java.io.In..
순열 🪅 매 반복마다, 다음 반복에 영향을 주지 않게 초기화를 잘 하였는가 🪅 입력을 받지 못했을 때, NullPointException을 띄우지 않고 프로그램을 올바르게 종료시킬 수 있는가 🪅 순열을 구현할 수 있는가 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /** * 백준 9742번 순열 * 입력: * 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. * 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전순 순서대로 주어진다...
N과M (2) 🪅 순열과 조합의 차이를 알고있느냐 🪅 조합(Combination)을 구현할 줄 아느냐 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /** * 백준 15650번 N과M(2) * 입력: * 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) * * 출력: * 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, * 각 수열은 공백으로 구분해서 출력해야 한다. * 수열은 사전 순으로 증가하는 순서로 출력해야 한다. * */ public class Mai..
피로도 🪅 KeyPoint: 순열을 dfs로 구현할 수 있느냐 => dfs(int depth, int k, int[][] dungeons) class Solution { int answer = 0; boolean[] visited; public int solution(int k, int[][] dungeons) { visited = new boolean[dungeons.length]; dfs(0, k, dungeons); return answer; } public void dfs(int depth, int k, int[][] dungeons) { for(int i = 0; i < dungeons.length; i++) { if(!visited[i] && dungeons[i][0]