Lv 2. 주식가격
·
Algorithm & Data Structures/Programers
코드 흐름answer[] 배열을 price.length() 만큼 선언한다.각 가격의 위치를 집어넣을 Stack을 선언한다.시작점 부터 price.length -1 까지 for 문을 돈다.만약 stack이 비어있다면 stack에 현재위치를 저장하고 비어있지 않고,stack.peek()위치의 prices가 이번 price보다 크다면 stack에서 pop 하고 stack.pop() 한 위치에 현위치(i)-stack.peek() 를 하여 가격이 저장된 길이를 삽입한다.for문이 끝나고 stack에 남아있는 위치가 있다면 이는 마지막 이 될때까지 가격이 떨어진 적이 없으니 prices.length에서 stack.peek()를 빼고 -1을 하여 가격이 떨어지지 않았던 길이를 구해낸다.import java.util...
Lv 2. 디펜스게임
·
Algorithm & Data Structures/Programers
코드 흐름만나는 모든 적의 수가 담긴 enemy 배열에서 만나는 모든 적의 수를 우선 뺀다.뺀 적의 수를 PriorityQueue(Collection.reverseOrder()); 를 통해 내림차순으로 정렬되는 pq에 담는다.혹여 무적권 찬스가 남아있고 현재 나의 아군이 - 상태라면 while문으로 반복하여 내아군이 +상태가 되거나 chance가 0이 될때까지 반복하는 반복문을 들어간다.여태 만났던 모든 라운드 중에서 수가 가장 많았던 적군의 수를 pq.poll로 불러내어 그라운드를 무적권으로 방어하고내아군을 그만큼 다시 살린다.만약 내아군이 아직도 -상태에다가 무적권 찬스가 남아있다면 이 조건을 해제할때까지 위과정을 반복한다.만약 아군이 +상태라면 다음 라운드를 진행하고 answer을 증가시키고 아니라..
Lv 2. 땅따먹기
·
Algorithm & Data Structures/Programers
동적계획법 DP 로 풀 수 있었다.4개의 행이 정해져 있기 때문에 각 행을 내려갈 때마다 이전의 자신의 행을 제외한 값을 더하고 최댓값을 저장해나가면서 최종적으로 1행 2행 3행 4행을 비교해서 가장큰값이 정답이 되게끔 풀이하였다.import java.util.*;class Solution { int maxScore(int a, int b, int c){ return Math.max(Math.max(a,b),c); } int solution(int[][] land) { int answer = 0,last; for(int i = 1 ; i  Math-max(a,b)
Lv 2. 롤케이크 자르기
·
Algorithm & Data Structures/Programers
처음 떠올린 자료구조는 Set 이었다. 중복 제거를 통해 토핑의 갯수를 파악 할 수 있을 것이라 생각했고 어차피 2명이서 나눠 먹는것이라면 토핑의 갯수는 같을 것이고 전체 토핑의 갯수에서 짝수일때는 2분의 1이며 홀수일 때는 2분 의 1에서 하나를 더한값과 같을것이라 생각하여 코드를 구상하였다.하지만 홀수 일때 중간에 단하나의 다른 토핑이 있을 때 오류가 발생 하였고 이를 해결하지 못할 것 같아 엎어 보았다.모든 토핑의 종류와 갯수를 Map에 저장하고 하나씩 짚어가며 앞롤케잌에서는 ++ 뒷롤케잌에서는 --를 진행하여 두개의 케이크의 토핑갯수가 같을 때 answer을 구한다는 부분은 같으나 Map을 사용하였는가 array를 사용하였는가에 따른 효율차이가 매우 극심하였다. Map과 Set을 이용하여 푼 코드..
Lv 2. 뒤에있는 큰수 찾기
·
Algorithm & Data Structures/Programers
스택에 인덱스를 넣고 비교하면서 뒷큰수를 찾았을 때 stack에서 pop하며 비교하는 식으로 구현하였다.import java.util.*;class Solution { public int[] solution(int[] numbers) { Stack stack = new Stack(); stack.push(0); int[] answer = new int[numbers.length]; for(int i = 1 ; i  Stack -push()-pop()-peek()
Lv 2. 모음사전
·
Algorithm & Data Structures/Programers
DFS를 사용했을때 가장 빠른 결과가 나올 수 있을 것 같은 순서였다.다른방식을 생각해 보고자 했지만 떠오르지 않았다. ㅠ하나의 리스트를 넣고 모든 경우의 수를 넣은 후 순서 탐색을 통해 그 리스트안의 인덱스 값을 반환하여 정답을 찾아내었다.import java.util.*;class Solution { List list = new ArrayList(); String[] arr = {"A","E","I","O","U"}; public int solution(String word) { int answer = 0; DFS("",0); for(int i = 0 ; i
Lv 2. [3차] 압축
·
Algorithm & Data Structures/Programers
Map의 containsKey를 이용하여 탐색 속도를 최소화 하고자 하였다. import java.util.*;class Solution { public ArrayList solution(String msg) { ArrayList answer = new ArrayList(); HashMap dic = new HashMap(); for(int i = 0 ; i String-valueOf(c) : c를 String으로 변환
Lv 2. N진수게임
·
Algorithm & Data Structures/Programers
이번 문제는 꽤나 재미있었다. 나는 우선 가변성의 n 진수로 바꾸는데에 있어 이전에 사용해보았던 integer.toString 을 써보고자 하였다.그이후 코드를 시원시원히 적어본 결과 n진수의 숫자를 하나하나 전체적으로 집어넣고 있었고 문제안의 요구사항에서는 N진수로 표현한 것들도 모두 한글자씩 떼서 출력해야함을 알 수 있었다.인터넷 검색 결과 StringBuilder를 이용하여 하나의 수를 모두 builder에 집어넣고 그이후 턴마다 사람이 말할 숫자를 꺼냄으로써 문제를 풀이한 것을 보았다. 코드가 매우 간단해 보였고 내기준에서는 창의적이었으며 인상적이어서 첨부한다. import java.util.*;class Solution { public String solution(int n, int t, ..
Lv 2. 괄호 회전하기
·
Algorithm & Data Structures/Programers
Queue 를 이용하여 회전하는 로직을 구현하였고,회전을 1회 할때마다 isValid 함수를 통해 유효한 괄호인지 체크하였다.isEmpty() 를 리턴하여 stack이 비었다면 true를 리턴하도록 구현하였다.import java.util.*;class Solution { public int solution(String s) { int answer = 0; Queue q = new ArrayDeque(); for(int i = 0 ; i q){ Stack st = new Stack(); for(Character c : q){ if(c == '(' || c == '{' || c == '[') ..
Lv 2. 게임 맵 최단거리
·
Algorithm & Data Structures/Programers
import java.util.*;class Solution { int[] dx = {1, 0, -1, 0}; int[] dy = {0, 1, 0, -1}; public int solution(int[][] maps) { int answer = 0; int[][] visited = new int[maps.length][maps[0].length]; bfs(maps, visited); answer = visited[maps.length-1][maps[0].length-1]; if(answer == 0) answer = -1; return answer; } public void b..