본문 바로가기

전체 글154

[프로그래머스] 네트워크 / 자바 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 DFS 문제 인접행렬 탐색할 때 대각선 기준으로 위 아래 둘 중 하나만 봐도 된다. 이거 구현하려니 머리가 터질 것 같았다 패스 ~ 숫자 0(의미적1)부터 살펴본다. 방문한적이 없다면 answer ++ dfs로 숫자 0 과 관련되어 있는 숫자들을 다 살펴본다. dfs에 거쳐지면 visted = true 해당 노드에 인정행렬을 흝어보며 연관되어 있는 숫자들을 살펴본다(dfs) 즉, 재귀호출 import java.util.*; class Solution { public int solution(.. 2024. 4. 22.
항해 99 25일차 TIL( 게임 맵 최단거리 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 DFS 문제 DFS를 통해 동,서,남,북 위치 중 갈 수 있는 곳을 다 탐색한다. 이때 depth로 길이를 알 수 있다. 계속 최소 depth를 업데이트 한다. import java.util.*; class Solution { int[] x = new int[]{1,0,0,-1}; int[] y = new int[]{0,1,-1,0}; boolean[][] visited; int answer = Integer.MAX_VALUE; public int solution(int[][] maps) .. 2024. 4. 22.
항해99 24일차 TIL( 타겟 넘버 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 DFS 이용 마지막 노드까지 도착했을 때 타켓 숫자면 카운팅 DFS 파라미터에 들어가야 할 것들 DFS 실행시킬 배열 깊이 타켓 넘버 이전합 //dfs로 플러스 마이너스 다 붙여가며 해당 숫자 카운트 import java.util.*; class Solution { int answer = 0; public int solution(int[] numbers, int target) { dfs(numbers, 0, target, 0); return answer; } void dfs(int[] nu.. 2024. 4. 21.
항해99 23일차 TIL ( 배달 / 프로그래머스 ) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 가중치가 있는 그래프 해결법: 다익스트라 알고리즘 관계도에따라 map을 만든다. start에서 갈 수 있는 곳들을 탐색하고 disct배열에 기록해둔다. disct 에서 방문한 노드를 제외한 노드중에 가장 가까운곳으로 간다. 위의 사항들을 반복한다. import java.util.*; class Solution { boolean[] visited; int[] disct; int[][] map; int n; public int solution(int N, int[][] road, int K) .. 2024. 4. 20.
항해99 22일차 TIL(큰 수 만들기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 한 번에 정답을 도출할 수 있는가 Yes or No No, 숫자 가장 앞에서부터 큰 숫자를 고른다고 해도 안 되고 가장 작은 숫자를 뺀다고 해도 안된다. 뺄 수 있는 숫자 다 빼보고 탐색해보기 완전 탐색이라라고 하기엔 시간복잡도에서 걸릴 것 같다 다시 2번으로 돌아가기 한 번에 정답을 도출 할 수 있는가 Yes or No Yes, 탐욕스러운 알고리즘 정답을 만들어야 할 최소한의 숫자들을 뒤에 남겨놓고 앞에 숫자에서 하나 뽑는다. 그 과정을 반복한다. ex) 입출력 예2번 {}선택 존 {}도.. 2024. 4. 19.
항해 21일차 99 TIL (공원산책/프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 구현 문제여서 아이디어는 설명 안하겠다. isWalk: 갈 수 있는 길인지 확인하는 함수 separate: 방향, 거리를 계산해 {x,y}로 반환하는 함수 import java.util.*; class Solution { public int[] solution(String[] park, String[] routes) { int xLength = park[0].length(); int yLength = park.length; int[] startInd = new int[2]; startInd.. 2024. 4. 18.
항해99 20일차 TIL( 전력망을 둘로 나누기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 연결선이 가장 많은 숫자 구하기 그 숫자랑 연결되어 있는 선 하나씩 끊어보며 차이 업데이트하기 import java.util.*; class Solution { public int solution(int n, int[][] wires) { int group1N = 0; int group2N = 0; int[][] linesN = new int[n][2]; int k = 1; //linesN = 숫자마다 연결되어 있는 숫자 개수 구하기 for(int[] l : linesN) { l[0] = .. 2024. 4. 17.
[프로그래머스] 연속된 부분 수열의 합 / 자바 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 시작 인덱스를 i 끝 인덱스를 j 로 가정한다. i를 고정하고 j를 올려가면 총합을 올려간다. 만약 i ~ j 의 합이 주어진 k와 같거나 크다면 반복문을 멈춘단. 같다면 멈추고 i와j의 길이, i, j를 기록한다. i +1 하고 2 ~ 3 과정을 반복한다. 기록한 것들을 조건에 부합하게 정렬한다. 가장 앞에 있는 인덱스를 꺼낸다. import java.util.*; class Solution { public int[] solution(int[] sequence, int k) { int n.. 2024. 4. 16.
Iterator에 대하여 Iterator 자바의 컬렉션에 존재하는 값들을 읽어오기 위한 방법으로 'iterator'라는 클래스가 존재한다. 이 iterator는 해당 컬렉션의 주소값을 기반으로 하나씩 값을 조회하는 클래스이다. 따라서, 대표적으로 다음과 같은 두 개의 함수가 존재한다. hasNext() : 다음 값을 갖고 있는지 true/false 반환 next() : 다음 값으로 이동 및 반환 자바에서는 각각의 컬렉션별로 Iterator를 반환하는 함수를 갖고 있고, 이 함수는 컬렉션의 첫 번째 주소 값을 반환하는 형식으로 되어있습니다. Iterator를 이용해 컬렉션을 추출하는 방법은 '첫 번째 주소를 담은 Iterator 생성 -> 반복문을 통해 하나씩 이동하며 저장된 값 반환' 입니다. 이를 코드로 나타내면 다음과 같습니.. 2024. 4. 16.