<181020> LG CNS CODE MONSTER 2018 본선 후기(Off-line TEST)
총 4문제 / 3시간
플랫폼 : 프로그래머스
예선은 1800명 정도 응시, 본선은 100여명 정도 선발.
1) 스타트와 링크의 시너지 버전
2) 로어바운드+어퍼바운드를 통한 구간
3) 맵, 비트 DP
4) KMP 실패함수
- 이런적이 없었는데, 다 풀었다.
'Etc.' 카테고리의 다른 글
<180518> 배민 코테 1차 (0) | 2018.05.19 |
---|---|
[교양] 링크 소프트웨어 세상 (Link Software) (0) | 2018.03.22 |
<180310> 삼성 S/W 테스트 A형 후기(합격) (0) | 2018.03.11 |
Codeforces Round #515 (Div. 3)
### Codeforces Round #515 (Div. 3) ###
Problem: http://codeforces.com/contest/1066
Tutorial: http://codeforces.com/blog/entry/62419
A.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <cstdio> #include <vector> using namespace std; int main() { int tc; scanf("%d", &tc); while(tc--) { int L, v, l, r; scanf("%d%d%d%d", &L, &v, &l, &r); int ans = L/v; ans -= r/v; ans += (l-1)/v; printf("%d\n", ans); } return 0; } | cs |
>> 문제를 이해하기가 어려웠지만, 테케의 힌트를 통해 이해할 수 있었다.
>> lanterns 이 뭔진 모르겠지만, v 간격으로 있는데, 구간 [L, R] 에 있는 것은 제외해야한다.
>> (전체 갯수) - (R을 포함하는 구간까지의 갯수) + (L-1 을 포함하는 구간까지의 갯수) 가 정답이 된다.
B.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <cstdio> int h[1001]; int main() { int n, r; scanf("%d%d", &n, &r); int ans=0; for(int i=0; i<n; i++) scanf("%d", h+i); // [pos-r+1, pos+r-1] int cur = n-r; while(n > 0) { bool turn=0; for(int i=cur; i<n; i++) { if(i >= 0 && h[i]) { cur = i-r-r+1; n = i; ans++; turn = 1; break; } } if(!turn) { ans=-1; break; } if(cur+r <= 0) break; } printf("%d\n", ans); return 0; } | cs |
>> 대회 시간중에는 풀지 못한 문제.
>> 히터를 pos 위치에서 키면 히터가 켜지는 범위는 [pos-r+1, pos+r-1] 이 된다.
>> 여기서 14라인 이후 n은 n번째부터는 확실하게 히터가 켜진 상태라고 정의하였다.
>> 그렇다면 n-1번째까지 켜지게 하기 위해서는 n-r 번째 부터 확인을 해야한다. (15번 라인)
>> 다음으로 i번째 히터를 켰다고 가정하면, i번째 이후로는 모두 히터가 켜져있다고 생각하면 된다. n = i;
>> 현재 i-r+1 번째까지도 히터는 켜져 있는 상태. i-r+1 을 n'이라고 생각하면 n'-r번째. 즉, i-r-r+1 번째에 히터가 있으면 베스트다.
>> 하지만, [i-r-r+1, i-r+1) 구간까지 히터가 없다면, [i-r+1, i) 까지의 히터를 켜서라도 [i-r-r+1, i-r+1) 구간에 히터의 영향을 받게 해야한다.
>> 맨 우측부터, cur+r 까지는 히터의 영향을 받은 구간이므로, 이 값이 0이면 모두 히터의 영향을 받는 상태.
C.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <cstdio> #include <vector> #include <map> using namespace std; int deq[500000]; int Min(int a, int b) { return a < b ? a : b; } int main() { int tc; scanf("%d", &tc); char cmd; int id, L, R; L = R = 250000; map<int, int> mii; while(tc--) { scanf(" %c%d", &cmd, &id); if(cmd == 'L') { deq[L] = id; mii[id] = L--; } else if(cmd == 'R') { deq[++R] = id; mii[id] = R; } else { // '?' int idx = mii[id]; int ans = idx-L-1; ans = Min(ans, R-idx); printf("%d\n", ans); } } return 0; } | cs |
>> 덱과 맵을 이용하여 해결했다. 간이덱을 만들긴 했지만, 실질적으로 덱을 위한 배열은 없어도 됐다.
>> 6, 27, 31 라인 삭제 후 32라인을 mii[id] = ++R; 로 수정해도 된다.
D.
E.
F.
'PS > Code Force' 카테고리의 다른 글
Codeforces Round #506 (Div. 3) // rated (0) | 2018.08.30 |
---|---|
Codeforces Round #496 (Div. 3) (0) | 2018.08.12 |
Codeforces Round #498 (Div. 3) (0) | 2018.08.12 |
Codeforces Round #501 (Div. 3) // Rated (0) | 2018.08.02 |
[MongoDB] (RDB vs NoSQL) 및 간단 명령어
### MongoDB 특징 ###
- 관계형 데이터베이스(RDB)는 데이터를 Column과 Row로 표현한다. 각 칼럼은 데이터의 타입을 표현하고, 각 Row는 하나의 레코드(Record)를 의미한다.
- 반면, MongoDB는 문서형 데이터베이스의 대표적인 케이스로 RDB와는 다른 구조적 특징을 갖는다.
1) Row는 있지만, Column은 없다.
- 정확히는 Row 속에 RDB 에서의 칼럼 역할이 포함되어 있다고 볼 수 있다.
- 문서형 데이터베이스에서 하나의 Row는 데이터 타입과 각 데이터 타입에 부합하는 데이터를 모두 소유한다.
- 이전 RDB에서는 모든 Row가 동일한 칼럼에 종속족이었던 것과는 달리, 문서형 데이터베이스는 각 Row가 서로 다른 칼럼의 종류, 갯수를 소유하는 것이 가능하다.
2) 장점
- 엄격한 구조적 지배에서 벗어나서 확장성이 매우 높다고 볼 수 있다.
- 기존의 RDB는 칼럼이 다른 구조화된 자료구조를 가지는 것이 불가능 했으며, 이를 외래키로 해결하고자 하였다.
하지만, 문서형 데이터베이스는 어떠한 데이터타입이라도 수용 가능한 JSON이라는 형태의 구조를 가진다.
3)
관계형 데이터베이스에서의 테이블 => 컬렉션(Collection)
레코드 => 문서객체(Document)
### MongoDB 간단 명령어 ###
> cls # 화면 클리어
> show dbs # DB 목록 확인
admin 0.000GB
config 0.000GB
local 0.000GB
> use store # DB 선택 (없는 DB면 새로 생성 후 선택)
switched to db store
> db # 현재 선택된 DB 확인
store
> db.createCollection('books'); # Collection 생성
{ "ok" : 1 }
> show collections # Collection 리스트 확인
books
> db.books.insert({title:'Book-0', content:'Zero', author:'Hoon'}) # Document 삽입, 컬렉션은 없으면 자동으로 생성
WriteResult({ "nInserted" : 1 })
> db.books.find().pretty() # 도큐먼트 확인.
{
"_id" : ObjectId("5bc562bc5d27acea4455d20a"),
"title" : "Book-0",
"content" : "Zero",
"author" : "Hoon"
}
> db.books.insert([ # 여러개의 도큐먼트 삽입
... {title:'Book_Two', content:'ONE-TWO', autor:'JJo'},
... {title:'Book_Three', content:'TWO-three', quthor:'Yong'},
... {title:'Book_Four', content:'Three-Four', autor:'Hooni', Age:27}
... ])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
> db.books.find().pretty()
{
"_id" : ObjectId("5bc562bc5d27acea4455d20a"),
"title" : "Book-0",
"content" : "Zero",
"author" : "Hoon"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20b"),
"title" : "Book_Two",
"content" : "ONE-TWO",
"autor" : "JJo"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20c"),
"title" : "Book_Three",
"content" : "TWO-three",
"quthor" : "Yong"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20d"),
"title" : "Book_Four",
"content" : "Three-Four",
"autor" : "Hooni",
"Age" : 27
}
> db.books.remove({quthor:'Yong'}) # 도큐먼트 제거
WriteResult({ "nRemoved" : 1 }) # 제거 성공에 따른 메세지
> db.books.find().pretty()
{
"_id" : ObjectId("5bc562bc5d27acea4455d20a"),
"title" : "Book-0",
"content" : "Zero",
"author" : "Hoon"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20b"),
"title" : "Book_Two",
"content" : "ONE-TWO",
"autor" : "JJo"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20d"),
"title" : "Book_Four",
"content" : "Three-Four",
"autor" : "Hooni",
"Age" : 27
}
> db.books.remove({author:'Yong'})
WriteResult({ "nRemoved" : 0 }) # 제거 실패시의 메세지
> db.books.update({author:'Hoon'}, {age:25, gender:'male'}) # 업데이트 (replace 개념인듯 하다)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.books.find().pretty()
{
"_id" : ObjectId("5bc562bc5d27acea4455d20a"),
"age" : 25,
"gender" : "male"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20b"),
"title" : "Book_Two",
"content" : "ONE-TWO",
"autor" : "JJo"
}
{
"_id" : ObjectId("5bc563945d27acea4455d20d"),
"title" : "Book_Four",
"content" : "Three-Four",
"autor" : "Hooni",
"Age" : 27
}
>
- 더 많은 내용 참고하기 : https://velopert.com/545
'DB' 카테고리의 다른 글
sequelize issue (0) | 2019.03.28 |
---|---|
[Error / solved] ERROR: Can't create database 'node_sns' (errno: 158458432) (0) | 2019.01.17 |
brew 를 통한 mongoDB 설치 및 설정, 서비스 (0) | 2019.01.15 |
[Workbench] Authentication plugin 'caching_sha2_password' cannot be loaded (0) | 2018.12.02 |
[MySQL] join 해부 (Left, Right, Outer, Inner Join) (0) | 2018.11.24 |