지난주 스터디에서 그래프를 공부했다고 실버 안풀어보고 덤볐다가 시간초과때매 두시간동안 고생했다ㅜ0ㅜ 까먹기 전에 정리해서 이제 똑같은 이유로는 안틀릴거다☠️ 문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다...
Comparable Interface 클래스의 기본 정렬 기준을 설정하는 인터페이스 Comparable Interface의 compareTo() 메소드를 구현하여 정렬의 기준이 되는 메소드를 정의하여 사용한다 정렬 가능한 클래스들로 Arrays.sort() 호출 시 실행되는 함수가 바로 Comparable Interface에 기본으로 오름차순으로 정의되어 있는 compareTo() 메소드이다! 하지만 특정 클래스 타입의 객체는 정렬 기준을 따로 정해줘야하기 때문에 해당 클래스에서 Comparable Interface를 상속받아 compareTo() 메소드를 override하여 정렬의 기준이 되는 메소드를 정의해줘야 한다 사용 방법 정렬하고자 하는 객체의 클래스에 Comparable Interface를 상..
문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자. 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 ..
문제 두 종류의 부등호 기호 ‘’가 k 개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다. 3 1 7 0 이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족하는 정수는 하나 이상 존재한다. 예를 들..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문자열 s를 받아 아스키코드로 변환하여 n만큼 이동시킨 후 다시 문자열 형태로 출력해야한다 z를 넘어갈 경우 다시 a부터 시작하고, Z를 넘어갈 경우 다시 A부터 시작해야한다 char타입은 문자의 형태와 아스키코드의 숫자 형태 모두 표현이 가능하다 n 은 int 타입이므로 더한 후 형변환을 해줘야한다 문자열 문제에서 char 타입이 엄청 많이 쓰인다 더 익숙해져야겠다 처음에는 변수를 엄청 많이 써서 코드가 길었는데 통과한 후 코드를 정리하니 겹치는 변수가 많았다 변수를 남발하지 말아야겠다 코드 cl..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 배열의 들어가는 수가 여러개라 당황했었지만 BFS로 생각보다 간단하게 풀 수 있는 문제였다 색깔이 같은 부분만 count를 해줘야하므로 현재 탐색중인 노드와 다음에 탐색할 노드의 값이 같은지 비교한 후 큐에 넣어줘야한다 코드 class Soultion { static public int[] solution(int m, int n, int[][] picture) { int numberOfArea = 0; int maxSizeOfOneArea = 0; int[] answer = new int[2]; i..
문제 배열로 주어지는 N개의 수들의 최소공배수 구하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 최대공약수 : 여러 수들의 공통적인 약수 중 가장 큰 수 최소공배수 : 여러 수들의 공통적인 배수 중 가장 작은 수 최대공약수는 유클리드 호제법으로 구해야한다 (이건 그냥 이해하려고 하기보다는 외워야할 것 같다 (gcd 함수)) 최소공배수는 대상이 되는 두 수의 곱을 최대공약수로 나눈 수이다 (이것도 그냥 외우자..) 코드 public class SkillCheck_2_1 { static public int gcd(int a, int b) { // 최..
문제 프로그래머스 2019 카카오 개발자 겨울 인턴십 - 인형뽑기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 바구니에서는 가장 마지막에 들어간 인형이 계속해서 필요하기 때문에 stack으로 구현했다 checkBasket은 뽑은 인형을 바구니에 넣을때 실행하는 함수이다 moves 배열에 들어있는 순서대로 인형을 뽑은 후에는 해당 인형이 있던 자리를 0으로 바꿔줘야한다 해당 열에서 인형을 뽑았으면 다음 인형은 뽑지 못하게 하도록 break로 반복문을 나가줘야한다 터진 인형은 pop으로 사라진 인형 갯수의 2배이므로 count*2를 해야한다 코드 im..