목록분류 전체보기 (75)
오늘은 여기까지
https://www.acmicpc.net/problem/13567아래와 같이 영역의 넓이, 명령어 개수, 명령어가 주어지면 그 결과 로봇이 최종적으로 위치한 좌표를 출력하는 문제이다. 영역을 벗어났다면 -1을 출력한다.이때 명령어가 MOVE인 경우는 함께 주어진 수만큼 현재 방향으로 이동한다. 명령어가 "TURN 0"이면 왼쪽 90도만큼 회전, "TURN 1"이면 오른쪽 90도 회전이다. 처음에 방향이 동쪽으로 고정이기 때문에, dx와 dy를 시계방향 순대로 동, 남, 서, 북으로 설정했다.static int dir = 0; // 동남서북static int[] dx = {1, 0, -1, 0}; // 동남서북static int[] dy = {0, -1, 0, 1}; 크게 알고리즘이 필요하지 않았고 구현..
https://www.acmicpc.net/problem/1149 대충 N번째 집까지의 누적합에 그 다음 집의 최소 비용을 더한다는 개념에서 DP를 사용하면 될 것이라고 생각했다. 하지만 단순히 각 집마다 최소 비용을 선택해 누적합을 구하는 방법이 맞을까 고민해봤다.아래 예제를 보면 아니라는 것을 알 수 있다. 첫 번째 경우처럼 집마다 최소 비용을 선택한 경우 누적합은 1 + 100 + 100 = 201이다. 두 번째 경우 누적합은 100 + 1 + 1 = 102로 최소값을 갖는다. 결과적으로 각 집의 최소 비용을 찾아 누적합을 구하는 것이 아니고, 모든 경우의 수의 누적합을 구해 그 중 최소값을 찾아야 한다.1. 비용 계산에 필요한 Cost와 누적합을 저장할 DP를 각각 2차원 배열로 선언한다. 2..
ORM (Object Relational Mapping)객체지향과 관계형을 매핑해주는 기술객체지향 패러다임과 관계형 데이터베이스 간에는 *패러다임 불일치가 존재한다. ORM은 불일치하는 두 패러다임을 매핑해준다. 패러다임 불일치?객체지향과 관계형의 특성이 다르다는 것은 당연한 사실이다. 객체지향의 상속, 추상화, 다형성과 같은 특징은 데이터베이스에 적용할 수 없다. 하지만 둘 사이 유사한 부분도 많다. 클래스와 테이블, 참조와 관계 등등.. 이런 특징에 기반해 객체지향을 자동으로 관계형 데이터베이스에 맞게 처리해주는 기법이 ORM이다. 특정 언어에 국한되는 개념이 아니고 다양한 객체지향 언어에서 ORM을 위한 프레임워크들이 존재한다. JPA (Java Persistence API)ORM을 Java 언어..
https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 힙 연습문제 답게 우선순위 큐를 사용하면 엄청 쉽게 풀린다.import java.util.*;class Solution { public int solution(int[] scoville, int K) { int answer = 0; PriorityQueue heap = new PriorityQueue(); for(int food : scoville) { ..
https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 자바 스택 연습문제 풀이 중이다. import java.util.*;class Solution { public int solution(int[] order) { int answer = 0; Stack stack = new Stack(); int point = 0; for(int i=1; i
1. 처음에 HashSet 사용해서 풀이한 경우HashSet -> ArrayList 또는 Array로 변환 -> Integer에서 int 타입 변환어쨌든 한 단계 더 수고로운 관계로 그냥 처음부터 ArrayList에 저장하는게 나은듯import java.util.*;import java.io.*;class Solution { public int[] solution(int[] numbers) { HashSet set = new HashSet(); for(int i=0; ii).toArray(); Arrays.sort(answer); return answer; }} 2. ArrayList에 저장하는 경우import java.util.*;public..
https://www.acmicpc.net/problem/1253 투 포인터를 활용해 문제를 풀기 위해 숫자를 정렬해준다.예를 들어, 현재 판별하려는 수가 5일때 `num[start]` 또는 `num[end]`가 5와 같은 경우 count를 증가 시키면 안된다.이걸 생각 못해서(?) 한참 헤맸다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(..
배열을 문자열로 변환하는 방법 정리해두는 글`Arrays.toString()`char, int, boolean, Object 등 다양한 데이터 타입을 받을 수 있다.주로 배열 내용을 출력할때 사용한다.import java.util.*;public class Solution { public static void main(String[] args) { boolean[] boolArr = new boolean[] { true, true, false, true }; char[] charArr = new char[] { 'j', 'a', 'v', 'a' }; int[] intArr = new int[] { 1, 2, 3, 4 }; Syst..
https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr0. board 문자열을 2차원 배열로 저장하는 부분String[][] block = new String[board[0].length()][board[0].length()];for (int i = 0; i 1. 제거할 4블록을 확인하는 부분boolean remove = false; // 제거할 블록 존재 여부boolean[][] check = new boolean[m][n]; // 제거할 블록 저장fo..