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 |
MongoDB 압축파일을 통한 설치
'on Mac' 카테고리의 다른 글
scp 를 이용한 파일 복사 (0) | 2018.06.08 |
---|
[Spring] Controller 실행하기
- 프로젝트 우클릭 - Run As - Run on Server
>> 컨트롤러가 수행되고 "home"을 넘겨주면, home.jsp (view) 가 실행된다.
'Spring' 카테고리의 다른 글
[Tomcat] 실행하기 on Mac (0) | 2018.10.09 |
---|---|
[Spring / Error] Server Tomcat v8.5 Server at localhost failed to start. (해결) (0) | 2018.09.18 |
WebFramework dev install (0) | 2018.09.10 |
[Tomcat] 실행하기 on Mac
Ref : http://nahosung.tistory.com/55
- 톰캣 실행하기
$ sudo /Library/Tomcat/bin/startup.sh
- 톰캣 종료하기
# sudo /Library/Tomcat/bin/shutdown.sh
'Spring' 카테고리의 다른 글
[Spring] Controller 실행하기 (0) | 2018.10.09 |
---|---|
[Spring / Error] Server Tomcat v8.5 Server at localhost failed to start. (해결) (0) | 2018.09.18 |
WebFramework dev install (0) | 2018.09.10 |
How JS works
1 : https://engineering.huiseoul.com/자바스크립트는-어떻게-작동하는가-엔진-런타임-콜스택-개관-ea47917c8442
2 : https://engineering.huiseoul.com/자바스크립트는-어떻게-작동하는가-v8-엔진의-내부-최적화된-코드를-작성을-위한-다섯-가지-팁-6c6f9832c1d9
3 : https://engineering.huiseoul.com/자바스크립트는-어떻게-작동하는가-메모리-관리-4가지-흔한-메모리-누수-대처법-5b0d217d788d
'JS > Reference' 카테고리의 다른 글
[JS] 정규표현식을 이용한 str.replace() / pattern.exec() (0) | 2018.12.26 |
---|---|
How to make a Web Crawler in Node.js (0) | 2018.11.24 |
이벤트 루프(Event Loop) (0) | 2018.10.02 |
이벤트 루프(Event Loop)
참고1 : https://meetup.toast.com/posts/89
참고2 : https://vimeo.com/96425312
참고3 : https://stackoverflow.com/questions/10680601/nodejs-event-loop
참고4 : https://johnresig.com/blog/how-javascript-timers-work/
참고 5: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
'JS > Reference' 카테고리의 다른 글
[JS] 정규표현식을 이용한 str.replace() / pattern.exec() (0) | 2018.12.26 |
---|---|
How to make a Web Crawler in Node.js (0) | 2018.11.24 |
How JS works (0) | 2018.10.02 |
[MySQL] 설치 및 기본 세팅 (Mac)
### MySQL 을 dmg 파일을 통해 설치한 경우 ###
1. 환경변수 설정 후 실행하기.
$ vi ~/.profile
export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:$PATH 추가
저장 후 종료
$ source ~/.profile
$ mysql -u root -p
그리고 비밀번호 입력하면 된다.
2.
그리고 시스템 환경설정에 가면 MySQL 아이콘(?)이 생긴다.
서버 작동 여부, 자동 실행여부를 설정할 수 있다.
참고 : http://jason719.tistory.com/45
[Spring / Error] Server Tomcat v8.5 Server at localhost failed to start. (해결)
[Spring / Error] Server Tomcat v8.5 Server at localhost failed to start.
- 메이븐 디펜던시의 문제였다.
- 메이븐의 디펜던시가 설치되어 있는 폴더로 이동한다.
- 나의 경우는 사용자 폴더의 .m2 폴더에 설치가 되어 있었다.
$ cd
>> 사용자 폴더로 이동한다. (보통은 터미널을 켰을 때의 상태이며, cd ~ 와 같다.)
>> 그 다음 ls -al 로 확인 (숨겨진 폴더)
$ cd .m2
$ ls
>> repository 라는 폴더가 있다. 폴더의 내용을 싹 비우면 된다.
$ rm -rf repository/
>> 그리고 해당 폴더를 다시 만들어 놓는다.
$ mkdir repository.
그리고 이클립스를 보면 Java Resource/Libraries/Maven Dependencies 가 비워지게 된다. (아마 맞을 것이다. 교수님께서 해수지는걸 옆에서 보는 상황이라, 저부분이 비워진 것이 맞을 것이다.)
그 다음, 이클립스를 종료 후 재실행 한다. 그럼 자동을 빌드에 필요한 파일들이 다운받아진다.
그리고 프로젝트 를 실행하면 된다. (Run As > Run On Server)
'Spring' 카테고리의 다른 글
[Spring] Controller 실행하기 (0) | 2018.10.09 |
---|---|
[Tomcat] 실행하기 on Mac (0) | 2018.10.09 |
WebFramework dev install (0) | 2018.09.10 |
WebFramework dev install
- jdk 설치 후 환경변수 설정 : http://firerope.tistory.com/8
- How to install Tomcat-8.5.3 on mac : https://ajarpitjainblog.wordpress.com/2016/08/12/how-to-install-tomcat-on-maclinux/
- Tomcat roles : http://elfinlas.tistory.com/369
- alias 설정 : https://okky.kr/article/198492
'Spring' 카테고리의 다른 글
[Spring] Controller 실행하기 (0) | 2018.10.09 |
---|---|
[Tomcat] 실행하기 on Mac (0) | 2018.10.09 |
[Spring / Error] Server Tomcat v8.5 Server at localhost failed to start. (해결) (0) | 2018.09.18 |