본문 바로가기

알고리즘/프로그래머스46

[프로그래머스] level 3 네트워크 (DFS, BFS) 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 포인트 자기자신은 항상 연결되어 있으며 == 1 상호 연결되어 있는 경우 하나의 네트워크로 취급한다. DFS package programmers.dfsbfs; public class NetworkDfsRemind { public int solution(int n, int[][] computers) { //컴퓨터 개수, 네트워크 연결 정보 int answer = 0; //방문 여부 표시 boolean[] visited = new boolean[n]; for(int i=0; i 2020. 3. 28.
[프로그래머스] level 2 타겟넘버 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이(DFS) /* * 타겟 넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘.. 2020. 3. 28.
[프로그래머스] 카카오프렌즈 컬러링북 (재귀) 문제링크 코딩테스트 연습 - 카카오프렌즈 컬러링북 | 프로그래머스 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 그래프 조건에서 == 1 일 때와, != 0 인 경우의 차이점은 뭘까. 무조건 == 1로만 생각하고 풀었더니 성공하지 못했다. 백준2667 단지번호 붙이기 [백준] 2667번 단지번호붙이기 Java (DFS, BFS) 그래프 관련 문제들의 유형이 다 비슷비슷 한 것 같아보인다. 확실히 짚고 넘어가야 할 필요를 느꼈다. 물론 돌아서면 까먹어서 문제.. 문제링크 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가.. n1tjrgns.t.. 2020. 2. 16.
[프로그래머스] 주식가격 (level 2) 이 문제는 그렇게 많이 어려웠던 문제는 아니였지만, 내가 문제를 풀었던 과정을 기록해야 할 필요를 느껴 정리를 하려한다. 문제 소스코드 public int[] solution(int[] prices) { int[] answer = new int[prices.length]; LinkedList stockQue = new LinkedList(); ArrayList result = new ArrayList(); for(int p : prices){ stockQue.add(p); } int stockSize = stockQue.size(); while(!stockQue.isEmpty()){ int current = stockQue.poll(); //System.out.println("current : "+ cu.. 2020. 1. 11.
[프로그래머스] 체육복 (level 1) - 그리디 알고리즘(탐욕법) 문제 그리디 알고리즘에 대한 문제를 처음 풀어보았다. 이게 1단계라고..? 소스코드 public int solution(int n, int[] lost, int[] reserve) { int answer = 0; int lostLen = lost.length; ArrayList losts = new ArrayList(); ArrayList res = new ArrayList(); for(int a : lost){ losts.add(a); } for(int a : reserve){ res.add(a); } //잃어버린 사람 제외 answer = n - lostLen; //도둑질 맞은 경우 for(int i=0; i 2020. 1. 9.
[프로그래머스] 쇠막대기 (level 2) 프로그래머스 쇠막대기 이 문제는 해결 방법을 생각해내기가 정말 쉽지 않았다. 내가 계속 전체 막대기를 한 번에 계산하려해서 더더욱 해결 방법을 찾지 못한 것 같다. 중요 포인트는 ()를 만나기 전까지 (를 스택에 담고, ()를 만나면 여태까지의 스택 사이즈를 더해준다. 만약 레이저를 만난 후 ()) ) 가 하나 더 나왔다면 막대기 한 개가 전부 잘렸기 때문에 끝부분 +1을 해준다. public int solution(String arrangement) { int answer = 0; String bar[] = arrangement.split(""); Stack stack = new Stack(); for(int i=0; i 2019. 12. 30.