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..
비트연산자
·
CS
위의 이미지로 모든 설명이 다 되긴한다.과거 디지털 공학 수업을 청강 하였을 때 공부한 적이 있었다. 회로에 관한 개념이었는데 Software에서 보다니 새삼 감회가 새로웠다. AND 연산자 (&)두 비트가 모두 1일 때만 1을 반환한다.예: 5 & 3 → 1OR 연산자 (|)두 비트 중 하나라도 1이면 1을 반환한다.예: 5 | 3 → 7XOR 연산자 (^)두 비트가 서로 다를 때 1을 반환한다.예: 5 ^ 3 → 6NOT 연산자 (~)단항 연산자로, 비트를 반전시킨다. 1을 0으로, 0을 1로 만든다.예: ~5 → -6 (2의 보수 표기법으로 인해 반전된 결과가 음수로 나온다.)왼쪽 시프트 연산자 (비트를 왼쪽으로 이동시키며, 오른쪽 빈 공간에 0을 채운다. 이동할 때마다 값이 2배가 된다.예: 5 ..
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]; ..
Stream
·
Spring
Stream이란 무엇인가 Stream은 대량의 데이터를 효과적으로 처리할 수 있도록 도와주는 데이터 처리 파이프라인이다. Stream을 활용하면 데이터를 선언적으로 처리할 수 있으며, 특히 병렬 처리와 함수형 프로그래밍 스타일을 지원하여 성능과 코드 가독성을 동시에 높일 수 있다.Stream의 가장 큰 특징은 지연 평가(lazy evaluation)다. 이는 중간 연산이 바로 실행되지 않고, 최종 연산이 호출될 때 비로소 모든 연산이 수행된다는 것을 의미한다. 이로 인해 불필요한 연산을 줄이고 성능을 최적화할 수 있다.Stream은 람다식과 함께 사용되며, 데이터를 필터링, 매핑, 정렬 등의 작업을 간단하고 직관적으로 처리할 수 있다. Stream의 작동 원리 예를 들어, List에 [1, 2, 3, 4..