Lv 2. 줄 서는 방법
·
Algorithm & Data Structures/Programers
package Programmers;import java.util.*;class p줄서는방법 { public int[] solution(int n, long k) { int[] answer = new int[n]; List strarr = new ArrayList(); //팩토리얼 값 long f = 1; for(int i = 1 ; i
Lv 2. 수식최대화
·
Algorithm & Data Structures/Programers
import java.util.*;class Solution { public long solution(String expression) { long answer = 0; // 포함된 연산자를 추출하여 문자열로 만듦 StringBuilder str = new StringBuilder(); if(expression.contains("+")) str.append("+"); if(expression.contains("-")) str.append("-"); if(expression.contains("*")) str.append("*"); // 연산자의 모든 우선순위 조합을 계산 S..
Lv 2. 미로탈출
·
Algorithm & Data Structures/Programers
코드 흐름문제가 바로 이해되는 문제였다.우선 maps를 순회하여 start 위치, end 위치, lever 위치를 찾아낸다.lever를 열어야 end 출구에서 탈출 할 수 있기때문에 2번의 BFS가 필요하다.두번의 BFS를 진행한 결과를 더하여 값을 리턴한다.import java.util.*;class p미로탈출{ static String[][] MIRO; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0 , -1, 1}; public int solution(String[] maps) { MIRO = new String[maps.length][maps[0].length()]; int[] start = new..
Lv 2. 괄호 변환
·
Algorithm & Data Structures/Programers
코드 흐름문제가 재귀이니 만큼 이해하기 꽤 힘들었다.그리하여 각 부분부분마다 필요한 코드를 체크하여 주석을 달고 구현하면서 이해하려고 노력하였다.구현난이도는 그리 높지 않았다. import java.util.*;class Solution { public String solution(String p) { if (check(p)) return p; return change(p); } // s가 올바른 문자열인지 판단하는 메서드 public boolean check(String s) { Stack st = new Stack(); for (int i = 0; i
Lv 2. 무인도 여행
·
Algorithm & Data Structures/Programers
코드 흐름100*100의 이차원배열을 0,0부터 최대 99,99까지 이차원 배열 순차적으로 돌면서X표시라면 isVisited[][] = true로 설정하고아니라면 그값을 int[][] map에 옮겨 담는다.BFS 탐색을 하면서 이어진 땅의 생존일수를 모두 더하고 return하여 한 섬의 생존가능 일수를 구한후오름차순 정렬하여 풀이하였다.import java.util.*;class Solution { int[][] map; boolean[][] isVisited; int[][] d = {{-1,0},{0,-1},{1,0},{0,1}}; class Node{ int dx; int dy; public Node(int dx, int dy)..
Lv 2. 행렬 테두리 회전하기
·
Algorithm & Data Structures/Programers
코드 흐름특별한 기술이 들어간 것은 아니고 시작부터 모듈화하여 set과 turn 메서드로 나누어 풀이하였다.set 에서는 처음 만들어지는 배열을 세팅하고turn 에서는 실제로 시계방향으로 배열을 돌려가며 최소값을 찾아낸다.오류 이문제를 푸는데 있어 여러가지 오류가 발생했다. 시계방향으로 돌려야 하건만 반시계 방향으로 돌리고 있었으며문제를 제대로 읽지않고 행렬 테두리만 회전하면 되는것을 행렬자체를 돌려 버렸다.문제를 잘 읽도록 하자.import java.util.*;class Solution { int[][] map; int[] answer; public int[] solution(int rows, int columns, int[][] queries) { answer = new..
Lv 2. 배달
·
Algorithm & Data Structures/Programers
코드 흐름다익스트라 알고리즘을 사용하여 문제를 풀이하였다.PriorityQueue 사용을 위하여 Node 선언시 compareTo 메서드를 오버라이딩 해주었다.compareTo 메서드를 통해서 오름차순으로 정렬되고 가중치가 낮은것 부터 돌아가면서 dijkstra 배열최신화 해주었다. import java.util.*;class Solution { class Node implements Comparable { int to; int distance; public Node(int to, int distance) { this.to = to; this.distance = distance; } @Overrid..
Lv 2. 전력망을 둘로 나누기
·
Algorithm & Data Structures/Programers
코드 흐름우선 wires에 담긴 모든 연결 정보를 인접 배열 형태로 나타낸다.이후 wires에 담긴 정보를 순회하면서 그정보에 대하여 끊어주고끊은 이후 BFS 탐색하여 몇개가 연결되어있는지 확인한다.answer와 비교하여 차이가 최소인지 확인하고다시 끊었던 정보에 대해 연결을 진행하고 다음  wires에 담긴 정보로 넘어가 반복한다.import java.util.*;class Solution { int[][] arr; public int solution(int n, int[][] wires) { int answer = Integer.MAX_VALUE; arr = new int[n+1][n+1]; for(int i = 0 ; i queue= ..
Lv 2. 하노이의 탑
·
Algorithm & Data Structures/Programers
코드 흐름https://www.youtube.com/watch?v=vq7dpFWpwAE위 영상을 보고 문제를 풀이 하였다. import java.util.*;class Solution { ArrayList list = new ArrayList(); public void hanoi(int n, int from, int mid, int to){ if(n == 0) return; hanoi(n-1,from,to,mid); list.add(new int[]{from,to}); hanoi(n-1,mid,from,to); } public int[][] solution(int n) { int[][] answer =..
Lv 2. 숫자 카드 나누기
·
Algorithm & Data Structures/Programers
코드 흐름문제 요구사항은 다음과 같다.두가지 주어진 배열에서 한 배열에서는 모두 나누어지고 다른 하나의 배열에서는 단 하나도 나뉘어지지 않아야한다.우선 각 배열의 최대 공약수를 구하고 그 최대공약수를 다른 하나의 배열에 나누어 보면서 확인해보면 되는 문제이다.devide 메서드를 통해서 각 배열에서 num 즉 gcd로 나누었을때 나누어지는지? 나누어진다면 false를 반환하여 확인한다.gcd 는 유클리드 호제법을 이용하여 gcd 최대공약수를 찾아낸다. import java.util.*;class Solution { public boolean devide(int[] arr , int num) { for(int n : arr) if(n%num == 0) ..