![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/dYjHbP/btq2oTy7UyN/0E9LKSM4zGK9GVAFRx32fk/img.png)
어릴 때 닌텐도 DS로 플레이했던 레이튼 박사 시리즈가 생각이 나는 문제...ㅋㅋ 아마 배열의 첫 인자부터 차례차례 남은 인자들과 합쳐서 limit를 넘는 순간 타고 빠지게끔? 작성하면 풀릴 거 같다. package com.choonham; class Solution { public int solution(int[] people, int limit) { int answer = 0; int sum = 0; int count = 0; for (int i = 0; i < people.length; i++) { if (people[i] != 0) { sum += people[i]; people[i] = 0; if (i != people.length - 1) { for (int j = people.length -..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bbgGf8/btq2plIyDao/rxXkUjnTRK8G5FA5y9IKzk/img.png)
1. Sequence? 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체, 보통 PK값에 중복값을 방지하기위해 사용한다. 2. Sequence의 기본 형식: CREATE SEQUENCE sequence_name [START WITH n] /* 시퀀스의 시작 번호 */ [INCREMENT BY n] /*증감치 */ [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] /* 메모리상의 시퀀스 값을 관리하도록 하는 것, 기본 값은 20 */ /* NOCACHE 는 원칙적으로 메모리 상에서 시퀀스를 관리하지 않음 */ 3. Sequence 객체 확인: SELECT SEQ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/t8gQt/btq2idxCSPy/WQ4xKhVshqk92mSNYtAKV0/img.png)
1. 합집합 UNION: 단순히 두 SELECT 연산을 합치는 것으로 중복을 허용하지 않는 일반 UNION과 중복 값을 포함하는 UNION ALL이 있다 ○Student Table: 1) UNION: 단순히 똑같은 STUDENT 테이블에서 id만 가져와 조인했을 경우, 동일 테이블의 합집합이므로, 하나의 테이블과 같은 결과 값이 나온다. 2) UNION ALL: UNION ALL 연산을 할 경우 중복 값을 포함하여 동일한 자료가 2개씩 들어있는 테이블이 결과 값으로 나오게 된다. 2. 교집합(INTERSECT): 말 그대로 두 SELECT 연산에서 동일한 부분만 추출하는 연산자이다. 예시로, Student Table과 Department Table의 교집합을 구해보면, ○Department Table: ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/b1QAC3/btq2hI51vvn/zjz0aLza59bexKeHLv7eCk/img.png)
엥...이거 완전...? 그냥 완전 탐색 기법을 사용해서 숫자 2자리를 제외하고 나머지를 사용하여 수열을 뽑아내면 되는 문제 아닌가..? 그래서 이전에 사용했던 조합을 뽑는 알고리즘을 그대로 가져와 조합을 뽑고, Integer 리스트에 넣어서 정렬하여 가장 큰 수를 뽑아내는 방식으로 코드를 작성했는데, package com.choonham; import java.util.ArrayList; import java.util.Collections; import java.util.List; class Solution { private List strArray = new ArrayList(); public String solution(String number, int k) { String answer = ""; ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/cq9Lri/btq2dA6iEAK/unhP7dptfwskvZk0KvIFs1/img.png)
일단 문제의 핵심은 조이스틷의 조작 횟수의 최솟값을 구하는 것이다. 즉, 만들어야할 문제가 어느 방향으로 움직여야 하는 지 정해야한다. 문제에서 문자는 모두 대문자로 주어진다고 했으니, 아마 아스키코드 값을 이용하여 판단하면 될 것이다. 표에서 A ~ Z가 65 ~ 90이므로 78번인 N을 기준으로 N 뒤 문자들은 조이스틱을 아래로 조작하여 만들게 코드를 작성하면 풀 수 있다. ... 라고 매번 처음에는 생각한다. 그러나 여기서 반드시 생각하고 넘어가야 하는 아주 중요한 사항이 있다! A일때는 조이스틱을 조작하지 않아도 문자가 이미 완성되어 있는 상태이다. 즉, JAAAAAAAAAJ 라면 굳이 A들을 모두 거치고 가는 방법보다는 첫 문자를 입력 후 마지막 문자로 커서를 이동시켜 마지막 J를 입력하는 것이..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/ca0hYS/btq16h0WlzJ/YRp6EeMoek9y1rsTrz4PKk/img.png)
조건을 하나 정해놓고 근사치를 뽑을 때까지 반복하면 되는 전형적인 Greedy 문제이다. 체육복의 여벌이 있는 학생이 체육복을 도둑맞았을 때는 자신의 체육복을 써야 하므로, reserve 배열에서 빠져야 한다는 점을 제외하고는 크게 문제 될 게 없는 문제이다. 정석대로 풀면 이중 for문이 2번 들어가게 된다. 이, 삼중 for 문에 좀 많이 당해봤던터라...그 풀이가 좀 보기 싫어서 Set도 만들어보고, List도 만들어보고 했지만, 이 문제는 그냥 이게 정답이지 싶어서 포기했다...ㅎㅎ package com.choonham; class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = 0; int lostN ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/dwcLbR/btq10SndNbt/fJKK4kl3vq4JMiu26QRhY1/img.png)
JDBC 3번째 시간이다. 이번에도 동일하게 문제를 하나 가져왔다. ◎Problem JDBC 활용_2 에서 풀었던 문제와 거의 동일한 형태의 문제를 가지고 왔다. 이미지 파일들을 활용한다는 점을 제외하곤 완전 동일한 문제라고 봐도 될 거 같다. 마찬가지로 엑셀 파일의 정보를 읽어와서 객체화한 뒤, DB에 저장하여 활용하여 구현해야한다. ◎best_sandwiches_list_chicago_price_address.xls 따로 자세한 데이터 흐름 설명은 필요하지 않을 거 같다. 바로 코드로 갑시다. ○MealInfo.java : 엑셀 파일에 있는 데이터를 String값으로 받아 각각 형변환을 실행하고 저장하여 가지고 있는 객체 package com.choonham.data; public class Meal..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/dulY7d/btq11zUwvEY/KnaIbESgCgT4uU36mOoFl1/img.png)
Greedy(탐욕) 알고리즘은 직전에 다뤘던 동적 계획법과 대조되는 개념으로, 큰 문제를 쪼갠 부분 문제를 전부 검토하여 정답을 도출하는 것이 아니라, 풀이를 진행하는 순간순간마다 최적이라고 생각하는 정답을 도출해내는 방법이다. 즉, 모든 경우의 연산을 전부 수행하여 "완전한 정답"을 찾기보다는 각 상황마다 최적이라고 생각하는 연산만 골라 수행하여 좀 더 빠르게 "근사치"를 찾는 기법이라고 할 수 있다. 예를 들어보면, 더보기 https://velog.io/@cyranocoding/%EB%8F%99%EC%A0%81%EA%B3%84%ED%9A%8D%EB%B2%95Dynamic-Programming%EA%B3%BC-%ED%83%90%EC%9A%95%EB%B2%95Greedy-Algorithm-3yjyoohi..
프로그래머스 연습 문제를 바로 들어가기 전에, 동적 계획법과 탐욕 알고리즘은 확실하게 짚고 넘어가야 할 거 같아서 따로 포스팅하기로 했다. 우선 동적 계획법 알고리즘부터 자세하게 다뤄보자. 1. Dynamic Programming? 동적 계획법이란 하나의 큰 문제를 쪼개어 부분적인 부분을 풀어 큰 문제를 해결할 수 있도록 고안된 알고리즘이다. 개념만 딱 들어보면 분할 정복과 다르지도 않은 것 같지만, 큰 차이점이 존재한다. 분할 정복 알고리즘은 큰 문제를 쪼개어 나온 부분 문제를 전부 해결하여 큰 문제에 대한 정답을 도출할 수 있었다면, 동적 계획법 알고리즘은 이미 도출한 부분 문제의 정답을 저장해놓았다가, 중복의 연산을 해야할 때 이를 스킵하고 저장한 값을 사용하여 좀 더 효율적인 연산이 가능하다. -..
1. SELECT의 기본 형식 -> SELECT [PREDICATE] table_name [AS 별칭] [그룹함수(Column_name) [AS별칭]] [WINDOW 함수 OVER (PARTITION BY Column_name1, ... ORDER BY Column_name3,..) [AS 별칭]] FROM table_name [WHERE 조건] [GROUP BY Column_name [ASC | DESC]] [HAVING 조건] -SELECT절 ▷PREDICATE : 검색할 튜플 수를 제한하는 명령어를 기술 ▶DISTINCT : 중복된 튜플이 있으면 그 중 첫번째 한개만 표시한다. - FROM: 검색할 데이터가 들어있는 테이블 이름을 기술함 - WHERE: 검색할 조건을 기술 2. 논리 연산자는 NOT..
- 이탈리안 레스토랑
- Async
- redux
- AsyncStorage
- redux-thunk
- react
- await
- 정보보안기사 #실기 #정리
- Promise
- react-native
- 인천 구월동 맛집
- javascript
- 맛집
- 파니노구스토
- 인천 구월동 이탈리안 맛집
- Total
- Today
- Yesterday