본문 바로가기

알고리즘

(117)
[소프티어] 인증평가 4차 슈퍼컴퓨터 클러스터 문제링크 : https://softeer.ai/practice/info.do?idx=1&eid=1204 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 이분탐색 문제다 가능한 정답 범위는 0 ~ 20억이다. (N이 1, a1이 10억, B가 10^18일 때) 0~20억 사이의 어떤 값 M을 정답이라 가정하면 N개의 컴퓨터 모두 성능이 M보다 크거나 같아야한다. N개의 컴퓨터를 모두 확인하면서 M보다 작다면 M에 맞추고, 크다면 무시해도 된다. N개의 컴퓨터에 대해 위 작업을 했더니 B값으로 모든 컴퓨터에 대해 할당 가능했다면 성공, 아니면 실패다. 성공했다는 것은 B값이 넉넉하거나 딱 맞았다는 것이고, 실패했다는 것은 B값이 부족했다는 뜻. * 넉넉하거나 딱 맞았다면 ..
[프로그래머스] 섬 연결하기 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr import java.util.*; class Solution { public static int par[]; public static int find(int x){ if(par[x] == x) return x; return par[x] = find(par[x]); } public static void union(int a,int b){ int x = find(a); int y = find(b); if(x!=y){ par[y] = x; } } pu..
[프로그래머스] 모두 0으로 만들기 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/76503 코딩테스트 연습 - 모두 0으로 만들기 각 점에 가중치가 부여된 트리가 주어집니다. 당신은 다음 연산을 통하여, 이 트리의 모든 점들의 가중치를 0으로 만들고자 합니다. 임의의 연결된 두 점을 골라서 한쪽은 1 증가시키고, 다른 한 programmers.co.kr import java.util.*; class Solution { public static int inorder[]; public static ArrayListadj[]; public static boolean visited[]; public static int par[]; public static void dfs(int node)..
[프로그래머스] 징검다리 건너기 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr class Solution { public static int tree[]; //인덱스트리 public static int reafSize; public static int dfs(int nodeNum){ if(nodeNum >=reafSize){ return tree[nodeNum]; }; int left = dfs(nodeNum*2); int right = dfs(nodeNum*2+1); return tree[nodeNum]=Math.max(left,right..
[프로그래머스] 여행경로 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr import java.util.*; class Solution { public static boolean selected[]; public static boolean isEnd; public static String[][] ticket; public static int N; public static String[] ..
[프로그래머스] 단어 변환 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr class Solution { public static boolean visited[] = new boolean[51]; //s1에서 한 문자만 바꿔서 s2가 가능한지 public static boolean availTrans(String s1, String s2){ int cnt = 0; for(int i..
[프로그래머스] 등굣길 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42898 class Solution { public static int N,M,MOD; public static int board[][]; public static int dp[][]; public static int dir[][] = {{0,1},{1,0}}; public static boolean isBoundry(int y,int x){ if(y=M) return false; return true; } public static int dfs(int y, int x){ if(dp[y][x] != -1) return dp[y][x]; if(y==(N-1) && x==(M-1)){ return 1; ..
[프로그래머스] 2 X N 타일링 / JAVA 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr class Solution { public static int dp[]; public int solution(int n) { int answer = 0; dp = new int[600001]; dp[1] = 1; dp[2] = 2; dp[3] = 3; dp[4] = 5; for(int i=5;i