목록전체 글 (59)
Hyunwoo's DATA
https://www.acmicpc.net/problem/10971 최초 풀이 n=int(input()) expense=[list(map(int,input().split())) for _ in range(n)] s=[] k=[] ans=0 visited=[False]*(n+1) def dfs(): if len(s)==n: sum=0 for i in range(n-1): sum+=expense[s[i]-1][s[i+1]-1] sum+=expense[s[n-1]-1][s[0]-1] k.append(sum) return for i in range(1,n+1): if not visited[i]: visited[i]=True s.append(i) dfs() visited[i]=False s.pop() dfs() ..
https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 이전에 풀었던 dfs문제 코드를 활용하여 for문을 돌려 합을 계산하고 가장 큰수 max를 출력하도록 만들었다. 코드가 깔끔하지 않다는 생각이 들어 답을 다시 고민해보았다. def dfs(): if len(s)==n: sum=0 for i in range(n-1): tmp=abs(s[i]-s[i+1]) sum+=tmp k.append(sum) return for i in range(n): if not visit..
https://www.acmicpc.net/problem/10974 dfs 풀면서 풀었던 문제와 똑같아서 쉽게 풀었다. def dfs(): if len(s)==n: print(*s) return for i in range(1,n+1): if not visited[i]: visited[i]=True s.append(i) dfs() s.pop() visited[i]=False n=int(input()) s=[] visited=[False]*(n+1) dfs()
https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 다음 순열 문제에서 기호만 뒤집으면 되는 문제였다. 중요한건 정렬도 역정렬로하면 되는데 이 경우에 sorted(,reverse=True)를 통해 간단히 해결 할 수 있었다. n=int(input()) m=list(map(int,input().split())) for i in range(n-1,0,-1): if m[i]m[j]: m[i-1],m[j]=m[j],m[i-1] m=m[:i]+sorted(m[i:],reverse=True) print(*m) ex..
https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 뒤에 숫자(i)가 앞 숫자(i-1)보다 클 때 앞 숫자를 기준으로 맨 끝부터 앞숫자보다 더 큰 수를 찾아 스왑해주고 앞 숫자를 기준으로 정열하면 되는 문제였다. 간단한데 이걸 정리하려니 시간이 꽤나 걸렸다. 문제를 많이 푸는수 밖에 없는 것 같다. n=int(input()) m=list(map(int,input().split())) for i in range(n-1,0,-1): if m[i]>m[i-1]: for j in range(n-1,0,-1): if..
https://www.acmicpc.net/problem/15649 BFS로 풀 수 있는 BFS의 대표적인 문제다. BFS는 공부하였는데 문제를 아직 안풀어봐서 애먹었다. def dfs(): if len(s)==m: print(s) return for i in range(1,n+1): if visited[i]: continue visited[i]=True s.append(i) dfs() s.pop() visited[i]=False n, m=map(int,input().split()) s=[] visited=[False]*(n+1) dfs()