목록problem solving (3)
멍

위상정렬 이라는 개념을 알아야 한다고 한다. 모르고 처음 푼 코드를 올린다. 그냥 dfs로 스택에 담아서 쭉 둘러보는 방법으로 옛날에 dfs풀었던 방법을 적용해서 풀었다. 분명 기존알고리즘과는 다르기때문에 비효율적으로 짰을 것이다. 4를 짓기 위해선 2,3을 동시에 행할 수 있고, 3을 건설하는 동안 2는 이미 다 완성되어 결과에 영향을 미치지 않는다. 4를 지으려면 10+100+10 = 120초의 건설시간 필요 만약 이렇게 되어있고 4가 최종건물이라면 4에서 바라봤을때 2,3,5가 지어져야 하는데 어차피 5가 110초이므로 2,3은 볼 필요도 없다. 그러므로 5가 최종 건설시간이다. 라고 생각할 수도 있다. 2,3이 결과에 무의미하다 해서 넘어가서는 안된다. 1때문에 그래서 모든 노드를 한번은 탐색해서..
어떻게 가는지 제한이 없기 때문에 출발점이나 도착점을 감싸는 원이 아닌 원들은 거쳐갈 일이 없다. 계산해서 출발점과 도착점을 포함하는 원들만 카운팅 해주면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 import java.util.Scanner; //어린왕자 public class Main { static int[] start; static int[] end; static int count = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int testCas..
처음 백준 알고리즘을 접했을때 1000부터 정복한다 ㅋㅋㅋ 하는마음으로 1000번부터 덤볐던 기억이난다. 터렛에서 무슨소린지 못알아듣고 처음에 피보나치라는 개념은 학부시절에 들어서 재귀이고 이렇게 짠다는것 정도 밖에 몰랐다. 그때 코드이다. 12345678910111213141516171819202122232425262728293031import java.util.*; public class Main{ public static int zero = 0; public static int one = 0; public static void main(String args[]){ Scanner sc = new Scanner(System.in); int testCaseNum = Integer.parseInt(sc.n..