Lv 2. 후보키
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 비트마스킹을 사용하지 않고 조합생성을 DFS를 통해 수작업했을때 시간초과 오류가 수십번나서 비트마스킹을 사용하여 문제를 푸는 방법을 공부하였다.효율성이 엄청나다. 조합짜는시간이 거의 삭제된 느낌import java.util.*;public class Solution { // 가능한 후보키 조합, 맵, 열 길이 private List candidateKeys = new ArrayList();..
Lv 2. 점찍기
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr// x와 y축으로 1자로 쫙 그리는건 쉽다.// 중요한건 1자로 그린 후 최대값 최솟값을 정해서 싹다 거리재고 d랑비교 해야한다는거 // x축으로 쭉가면서 찍은점들 거리 disList 확보// disList * 2 - 1 이 x,y축 점들 갯수// 즉 answer.// disList 정렬 // disList에서 하나씩 빼가면서 싹다 // 거리비교하고 되면 answer++;// 안되면 continue..
Lv 2. 광물 캐기
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr// 다이아, 철, 돌 곡괭이 순으로// 곡괭이는 5회사용가능하며 한번선택시 부러질때까지 사용// 광물은 순서대로 캐야한다. 무조건 순서를 지킨다.// 주어진 곡괭이로 가능한 조합을 생성한다// 예를들어 곡괭이 다 철 돌 순으로 1개씩 보유시// 다 철 돌// 다 돌 철// 철 다 돌// 철 돌 다// 돌 철 다// 돌 다 철// 6가지 경우의 수가 생성된다. // 다 다 돌 이면// 다 돌 다// ..
Lv 2. 문자열 압축
·
Algorithm & Data Structures/Programers
//제일 앞에서 정해진 부분만큼만 잘라야 한다.라는 부분//결론은 1 개 2개 4개 이런식으로 자를수 없으며//무조건 111,222,33333,4444 이런식으로 잘라야한다.//subString을 이용하면 괜찮을거 같고//만약 홀수면 많이 문제가 어려워지겠네//단서//홀수면 애매해진다. 나눌수 있는 숫자로만 가능하다.//21이면 아무래도 1개 3개 7개 21개 로만 나눌수 있다.//22면 1 2 11 //약수갯수만큼만 자를 수 있다라는점//약수구하기 method 필요//약수만큼 압축method 필요 (min 최신화 필요)//subString// import java.util.*;// class Solution {// public int solution(String s) {// int..
Lv 2. 멀쩡한 사각형
·
Algorithm & Data Structures/Programers
처음 코드는 부동소수점으로 인해서 오차가 발생하여 오답이 나버렸다.두번째 코드는 부동소수점의 오류를 보완하고 더 간결하게 해결한 코드이다.부동소수점에 대해서 알 수 있는 좋은 기회였지만... 시간이 너무 걸렸다.//규칙이 존재한다. // w 8 h 12 면// 약분해서 2, 3 이되고 2,3 에서 규칙이 총 4번 반복// 2,3에서 지워지는 사각형 갯수 * 4 가 답이다.// 결론은 7 12 와 같이 좀 약분했을때 큰수가 들어오면// 빡세다는건데// 음// 2 3 일때// w가 1 이동하면 1.5 이동함// w1 이동시 2개// 시작점이 1.5니까 나누어 떨어지지않으니까 +1해서 2// 총 4// 4,5 일때 한번보면 // 1 이동하면 1.2 2// 1.25에서 1이동하면 2// 2.5에서 1 이동하..
Lv 2. 가장 큰 정사각형
·
Algorithm & Data Structures/Programers
오늘은 별첨으로 다른코드도 있다.DP라는 다이나믹프로그래밍이 가로 ,세로 나눌것이아니라 한꺼번에 해도 된다는 생각을 왜 못했을까시간이 너무오래걸렸다. 간단히 짤수 있는 코드임에도 불구하고..주석은 내가 고민한 흔적이며첫 코드는 DP로 가로 세로 이차원배열을 만들어  대각선 루프를 돌며 비교한것이고두번째 코드는 가로 세로 대각선을 한꺼번에 비교한 코드이다.당연히 두번째코드가 3배정도 훨씬 더 빠르다.조금더 고민해보자..항상 생각하고 보다 쉽게 효율적이게 간단하게 짤수 있게 노력하자.// 가장 큰 정사각형 찾기// 가장 큰 정사각형을 찾는다라...// 1 1 0 0 1 // 1 0 1 1 1// 0 0 1 1 1 // 0 1 1 1 1// 0 1 1 1 1 // 1000 * 1000 = 1.000.000 ..
Lv 2. 거리두기 확인하기
·
Algorithm & Data Structures/Programers
import java.util.*;class Solution { char[][] map; Queue q; boolean[][] isVisited; int[][] d = {{0,1},{1,0},{-1,0},{0,-1}}; class Node{ int x; int y; int dis; public Node(int x, int y, int dis){ this.x = x; this.y = y; this.dis = dis; } } public int[] solution(String[][] places) { List answ..
Lv 2. 리코쳇 로봇
·
Algorithm & Data Structures/Programers
import java.util.*;class Solution { // 전역 변수 선언 boolean[][] isVisited; int[][] map; int xSize, ySize; // 좌표 클래스 class Node { int x; int y; int dis; public Node(int x, int y, int dis) { this.x = x; this.y = y; this.dis = dis; } } public int solution(String[] board) { // 변수 선언 int answ..
Lv 2. 테이블 해시 함수
·
Algorithm & Data Structures/Programers
역대급 쉬운 문제였다.다만 XOR 연산자 및 비트연산자에 대한 이해가 없어 XOR 연산을 하라는 말을 알아듣지 못해 상당히 시간낭비를 하였다. 비트연산자에 대해서 공부 후 포스팅 하도록 하겠다. import java.util.*;class Solution { public int solution(int[][] data, int col, int row_begin, int row_end) { int answer = 0; List list = new ArrayList(); for(int i = 0 ; i { if(o1[col-1]==o2[col-1]) return o2[0]-o1[0]; ..
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