아무도 보지 않는 블로그지만 그래도 정체모를 유입이 없진 않으니 일단 공지

---------------------------------------

코포 닉변하며, 앞으로 더 이상 Seremo라는 닉을 쓰지 않을 거 같아 옮깁니다.

 

XX.XX.X으로 뿅!

 

이 블로그는 한동안 동결되었다가 먼 미래에 게임 후기 적는 블로그가 되지 않을까 싶네요.

글 옮기기 귀찮아서 한동안 남겨두지만, 새해부터 새로운 글은 저 블로그로 올라올 예정입니디ㅏ.

'공지' 카테고리의 다른 글

[Profile]  (0) 2018.02.11

30일 오후 2시부터 5시까지 KCPC가 진행되었습니다. 대회 끝난지 하루도 안된 따끈따끈한 후기 쪄왔습니다
사실 과제가 많지만 저는 모릅니당 ㅎㅎ 개인전 & 오프라인은 너무 오랜만이라 재밌었습니당~ 야호!

타전공이기도 하고 신입생이기도 해서 올해는 타전공/신입생 부문으로 출전했습니당~!!
이 글은 절대 학습용/교육용 글이 아닌 뉴비보며 희망 얻어가세요~ 급의 발로 쓴 후기입니다. 저도 언젠가 성장하면 좋겠군요.


퍼솔 AC Pass 결국틀

#A 평생 새내기가 되고 싶은 유신이 (first-year) (3분 1try)
단순 구현..! 퍼솔했습니당ㅎㅎㅎㅎ(스코어보드에 1등 띄우는 거 처음이라 신났어요 >__<

#B 피카츄 라이츄 (pika) (9분 3tries)
코포도 KCPC도 B에서 삽질하는 징크스가 있는 듯 합니다ㅠㅠ
단순 구현은 맞는데 N이 날짜인 줄 알고 반복문 돌리다가 1틀
피카츄 경험치가 음수가 되는 거 모르고 1틀
ㅎㅎㅎㅎㅎㅎ 문제 좀 읽자
제가 2틀해서 이렇게 생각하는 건 절대 아니겠지만
문제가 어딘가 잘못되었다고 생각하는데
저는 경험치가 낮아지는 포켓몬 게임을 본 적이 없습니다 ㅎ..

#C KCPC는 무엇의 약자일까? (acronym) (14분 1try)
사실 문자열 보고 처음에 쫄았습니다.
설마 아호코라식...! 일 리는 없지만 설마 트라이 ...?? 둘다 절대 시간 내에 구현 불가능 ~
작년까지 문자열 입출력을 못받던 저는....ㅎ ㅎㅎ kmp도 최근에 공부했기 때문에ㅎ ㅎㅎ 머든 나오면 거릅니다.
다행히 단순 오토마타 문제였습니다. 후 뇌절말고 구현해야죠

3솔브한 시점에서 문제가 난이도 순이라는 걸 눈치챘어야 했지만 그러지 못했죠. ㅎㅅㅎ

#D 초코칩 케이크 (cake)
슬슬 어려운 문제가 나올 시점이라고 생각했습니다.
숭고한 캠프에서 세그먼트 트리를 진행했던 분이 문제에 등장하셨는데, 여기에 N제한이 30만이나 되길래
아 세그먼트 트리 문제구나! (<-아니었음) 이따 풀어야지하고 잠시 ㅌㅌ했습니다.

#E 함정에 빠진 이동관 (trap) (33분 1try)
누가봐도 단순 BFS! 뇌절말고 열심히 짰습니다.
초반이라 구현 속도도 준수했고 D를 건너뛴 덕분에 퍼솔을 먹었습니다.
근데 1등님 6분컷한 거 보고 좀 소름...

D 잠깐 다시 읽었는데 딱히 생각 안나서 또 패스

#F 대자보 (poster)
어 혹시 정수론? 점화식? 네모는 수학이 시러시러~ㅂㅂ
나중에 챙기러 돌아올까 했지만 다른 문제들에 막혀서 시간없어서 얘는 여기서 ㅂㅂ~

#G 신앙 (faith) (2tries)
빨간약 한 놈 씩 몰빵해주면서 s-h순으로 정렬해놓고 위에서부터 s-h>0인 경우에 파란약 먹이면 될 거 같았는데
풀이 자체는 어렵지 않아보이긴 합니다...만 맞왜틀
몇 번 더 틀리고 나중에 봐야지 하고 넘어갔습니다.

#H 얼마나 예뻐? (pretty)
안 예뻐요. 트리. 전위순회. ㅂㅂ

문제를 안 읽고 넘긴 건 이게 유일한데 마지막에 보니 다들 이거 붙잡고 있어서 쪼끔 후회.....ㅎ

#I ㅇㅇ (oo)
역톨레미로 후다닥 점 분류했는데 답을 출력할 때 보니까 외심의 좌표도 출력하라 하네요 ㅎㅎㅎ
꼼수따윈 통하지 않는... 문제 좀 읽자.
역톨 없어도 세 점 주면 외심 내놓는 함수 (이거 약간 뇌절...) 짜면 분류도 똑같이 할 수 있죠 ㅎㅎㅎ 머한거지
구현하기도 싫고 지금까지 뭐했나 싶어서 뇌절하다가 스코어보드 보니까 케이크가 많이 풀렸길래 잠시 Pass

#D 케이크 (66분 1try)
ㅎㅎㅎㅎ 쉬운 문제라는 걸 인지하니 풀이도 바로 떠올라서 뚝딱
너무 늦게 풀긴 했지만 다른 친구들도 나름 어디선가 삽질하고 있었는지 3등이었습니다. (문제는 이 때가 66분이었는데, 이 뒤로로 맞은 문제가 없.... ㅎㅎ )

빠가사린가.. 이 때는 진짜 문제가 난이도 순이라는 걸 조금이나마 눈치챘어야 합니다.
이 시점에서 5솔/3등이었는데 1,2등이 너무 막강하고 다른 5솔이 한 명밖에 없었기 때문에
남은 시간 동안 어떻게든 G를 고치고 I나 계속 풀어야지~ 라는 전략을 세웠습니다.
둘 중 하나만 이루면 성공하는 전략이었으나, 둘다 망해서 전략은 실패했죠

다시 G를 잠깐 보긴 봤습니다만 아무리 생각해도 반례가 떠오르지 않았습니다 ㅎㅎ
F랑 H는 끝까지 관심을 못 주었습니다 ㅠ 미안해..

#I ㅇㅇ (oo) (5tries)
2시간 이상 꼬라박았네요. 호감상으로 잘생긴 문제였습니다. 열심히 외심 구하는 공식을 짰습니다. 수직이등분선이 수평/수직일 때, 세 점이 한 직선 위인 경우 등 열심히 고려하고
대회 시작하고 두 시간 즈음 되서 완성하고 제출했는데 틀렸습니다. 틀렸습니다. 틀렸습니다. 틀렸습니다. 틀렸습니다.
ㅎㅎ 문제 인성이 참.....(제 실력의 문제죠) 이때 던지고 H를 보던 G를 고치던 해야했습니다 ㅎㅎㅎㅎ..

1시간 남은 시점에서 5솔브들이 많아졌고, 다들 무언가 시도하고 있었기에 어떻게든 하나를 풀어야 안전(?)해지는데
G는 도저히 반례를 모르겠고 F도 잠깐 봤는데 모르겠고 H는 읽기 싫었습니다.
I는 여전히 시도하는 사람이 없길래 출제자 심심할까봐, I랑 마지막까지 놀았습니당.

그렇게 저는 G랑 I를 끝까지 틀리고 5솔브/3등으로 마감햇습니당!
66분 이후로 푼 게 없는데 기도메타 성공해서 등수 3등 고정~~ㅎ


나중에 풀이 설명해주는데
아직도 G틀린 이유는 잘 모르겠습니다 흑....
I는 1. long double 미사용 2. 외심의 범위가 10^6 바깥일 수 있음의 두 가지 이유로 틀린 듯 합니다 ㅎㅎ
실수 문제 보면 맨날 넘겨서 잘 몰랐는데
double이 만능 짱짱맨이 아니란 걸 처음 알았습니다. 아니 10^12가 될 리가 없었죠 ㅎ 생각이 없었네요
그리고 문제 좀 읽자

개인전 오프라인 오랜만인데 문제가 많아서 좋았습니다.
저는 혼자 두면 네모 하고 싶은 거 다 해~~ 편식 모드이기 때문에 풀고 싶은 문제를 잡고 시간을 열심히 꼬라박는데
문제 선택에 많은 자유도가 있었기에 더더욱 즐길 수 있었지 않나 싶습니다.

기도메타 성공한 것도 너무 좋습니다. 제 실력에서 최고등수가 3등이라고 생각했는데 딱 그렇게 나왔네요 ㅎㅎㅎ
GI를 둘다 틀려버린게 아쉽지만, 둘 중 하나를 푼다고 해서 제 등수가 변하는 건 아니라서요ㅎㅎㅎ

대회후기 요약:
모두가 행복한 대회를 만들고 싶었다고 강조하셨는데,
모두가 행복한 대회는 모두가 무언가를 얻어가는(받아가는) 대회가 아닌가 싶습니다. (속마음::기념품 안 준 게 아깝...
각자 나름의 무언가를 얻어갔을 것 같은데
저는 I랑 2시간 즐겁게 놀았고, 무엇보다 20만원 너무 좋습니다 행복합니다~

'후기 및 분석 > 대회 및 공모전' 카테고리의 다른 글

2019 SCPC 1차 온라인 예선 후기  (0) 2019.06.22


#2133 타일 채우기 O(N) DP


어붙일 수 있는 형태가 규칙적입니다.
DP[i]=DP[i-1]+2*(DP[i-2]+DP[i-4]+DP[i-6]~~~)


#2001 보석 줍기 O(N) Floyd-Warshall, bitDP

실 DP+백트래킹으로도 풀 수 있습니다. 삽질했지만 플로이드 와샬의 메인 아이디어의 이해도를 높이기 위한 경험치가 되었습니다 ㅋㅋ

플로이드 와샬을 쓰는 건 아니고 k, i, j 순으로 원하는 거 넣고 돌리는 거 유사하게 i번째 섬에서 j번째 섬으로 갈 때 챙길 수 있는 보석의 최대 무게를 구합니다.

그리고 bitDP 돌리면서 답 구하면 되는데

놓치기 쉬운 부분1번섬에 보석이 있으면 돌아와서 보석 하나 더 챙길 수 있다는 거


코드보기

#7469 k번째 수 O(NlgN+MlgN) Persistent Segment Tree, Parametric Search

지소트 트리 + 파라메트릭 서치로도 풀 수 있습니다. 이분탐색 싫어서 PST 복습할 겸 PST로 짯는데 어차피 해야했습니다 ㅋㅋ;
좌표압축하고, 좌표 순으로 인덱스를 추가하며 ( 1 증가 ) PST를 구성해주며 됩니다. (다른 방법도 많을 것 같아요)
쿼리 처리는 이분탐색으로 하는데, 1부터 n사이를 Parametric Search로 처리한다. query(mid, l, r)을 가지고 판별하는데, 이때 가능한 mid 중 가장 작은 게 답이 된다는 점에 주의해서 짜면 됩니다. 최솟값이 아닌 mid는 똑같이 query에서 k를 반환해도, l과 r범위 바깥에 있습니다.

#16978 수열과 쿼리3 O(NlgN+MlgN) Persistent Segment Tree

PST 기본 구현 문제입니다. 7469에서 PST 구현 삽질했어서 연습겸 한 번 더 짜봤습니다 ㅎ...

여운 바쥬세요 >__<
눈 옆에 상처가 생기긴 햇지만 구래도 너모 귀염기염 (고양이가 아니고 레이팅이.....ㅎㅅㅎ 히히

(인터)알못인데 아무리 검색해도 배열로 된 트라이 코드가 잘 안 나와서 직접 짠 거 올려봅니다.
먼가 난잡한데 그래도 뿌듯해하며 업로드~~ (사실 문제 안 풀어서 글 쓸 게 없어서 이런 거라도 올림니다 ㅎㅅㅎ

itrie와 ilen, dtrie와 dlen 각각 insert_trie 및 find_trie의 매개변수...?입니당
문자열 매개변수로 주고받는거 잘 못해서 그냥 전역으로 짰... ㅌㅌ


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
45
46
47
48
49
50
51
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct trie{
    int Go[27];
    int output;
}trie_tree[6000001];
int tn=0//root = 0
 
string itrie; int ilen;
void insert_trie(int a,int s){//a
    if(s==ilen){
        trie_tree[a].output = 1;
        return;
    }
    if(trie_tree[a].Go[itrie[s]-'a']==0){
        trie_tree[a].Go[itrie[s]-'a'= ++tn; trie_tree[tn].output=0;
        insert_trie(tn,s+1);
    } else {
        insert_trie(trie_tree[a].Go[itrie[s]-'a'],s+1);
    }
    return;
}
 
string dtrie; int dlen;
int find_trie(int a,int s){//a에서 s번째 문자 찾기 
    if(s==dlen) return trie_tree[a].output;
    if(trie_tree[a].Go[dtrie[s]-'a']==0){
        return 0;
    } else {
        return find_trie(trie_tree[a].Go[dtrie[s]-'a'],s+1);
    }
}
 
int N,M,ans=0string ipt;
int main(){
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin>>N>>M;
    trie_tree[0].output=0;
    for(int i=1;i<=N;i++){
        cin>>ipt;
        itrie=ipt; ilen=itrie.length();
        insert_trie(0,0);
    }
    for(int i=1;i<=M;i++){
        cin>>ipt;
        dtrie=ipt; dlen=dtrie.length();
        ans+=find_trie(0,0);
    }
    cout<<ans;
}
cs

시험이 끝나고 까먹지 말자고 적는 글이..지만 이번 단원은 쉬어가기 단원이라 생각할 정도로 내용이 없어요. 와ㅏㅏ

무엇을 배웠을까 (15.1~15.8)

이중적분 하는 법 / 변수 순서 바꾸기 / 극좌표로 변환하기
삼중적분 하는 법 / 변수 순서 바꾸기 / 실린더 모양 극좌표로 변환하기 ($(x,y,z)\rightarrow \ (r,\theta,z)$ 자코비안은 $r$) / 구 모양 극좌표로 변환하기 ($(x,y,z)\rightarrow \ (\rho,\theta,\phi)$ 자코비안은 $\rho^2 sin\phi$)


여기까지는 고딩 때 물리2 했다면 회전관성이나 전자기장 세기 같은 거 구하면서 야매로 쓰던 개념을 체계적으로 잡아주는 느낌이었어요.

자코비안이라는 새로운 용어가 보이는데 이는 15.9절부터 정식으로 등장합니다!
15.8절까지는 그냥 "저렇게 좌표 변환 하면 이걸 추가로 곱해줘야 해" 식으로 배우죠 ㅎㅎ (물론 증명하고)

물2 했으면 새로 배우는 내용 (15.9)

$(x,y,z)$$(r,\theta,z)$나 $(\rho,\theta,\phi)$ 로 바꾸는 건 먼가 특수한 경우죠. 여기서부터는 이를 일반화시키는 내용을 배웁니다.

다시 실린더모양 극좌표 변환 부분을 이해해보면
$D=\{(x,y)\mid 1\leq x^2+y^2\leq4 \}$
이를 적분하기 위해서는 x와 y가 종속되어 있어서 푸비니 정리도 사용하지 못하고 상당히 더럽죠. 우엥

그래서 $(r,\theta)$ 좌표로 바꿔주면
$D=\{(r,\theta)\mid 1\leq r \leq 2, 0 \leq \theta \leq 2\pi \}$
이를 그래프로 보면 좀 와닿는데요.

딱히 보라고 넣는 건 아니고, 파알못 그래프 그리기 연습해봤어요 넘 힘들네요;; 원은 어떻게 그리는 걸까요

원래 원형이었던 $r$과 $\theta$가 직사각형이 되었어요. 와, 적분이 깨알만큼 쉬워졌죠!!
이처럼 Domain의 형태를 원하는 대로 바꿀 수 있는데, 15.7~8에서는 Cylindrical Coordinate과 Spherical Coordinate만 취급했다면 15.9는 일반화되어 이것저것 합니다.

즉, 15.9에서 배우는 변환의 핵심은 4개의 함수로 bounded된 2차원 도형에서, 둘 둘 모양이 비슷하면 이를 상수취급해서 네모형태로 바꾸어 적분을 쉽게(?) 하는 것입니다. 예제는 나중에 추가할게요

Domain만 바꿨다고 적분 끝난게 아니고, 적분인자 앞에 무언가가 곱해지는데, 이를 자코비언이라고 합니다.
이것도 인터넷 검색하면 나오는데 나중에 추가할래요.

근데 내용 진짜 저거 두개긴 해요. $(x,y)$를 $(u,v)$로 바꾸기 위한 변환을 구하고, 자코비언 구하고, 적분하면 끝!


내용은 쉬워보이지만 적분은 쉽지 않기에 시험은 또 망했어요ㅠㅠ
교재의 연습문제도 그렇구 배우는 내용은 어떻게 하면 다중적분을 더 쉽게 할까인 것 같은데, 정작 시험으로 주는 문제는 온갖 꼼수를 써도 계산량 엄청난 것들,,

제목이 거창한데 사실 네모가 미적공부하며 헷갈린 것입니다ㅎㅅㅎ
저는 미적 뉴비이기 때문에 오개념 지적은 감사히 받습니다.

$\vec{r''(t)}$과 $\vec{N(t)}$의 방향이 같지 않을까?


엄청난 미분과 제곱과 루트 연산에 지치다보면 저런 생각을 할 수도 있습니다. 그렇지만 슬프게도 아님니다 ㅠㅠ 다름니다.

$\vec{N(t)}=\frac{\vec{T'(t)}}{\left | \vec{T'(t)} \right |}$
저기 절댓값 들어간 분모가 t 로 표현되었죠 ㅎㅅㅎ.. 저걸 없애고 미분하면 결과가 달라지겠죠?

사실 좀더 생각해보면
$\vec{r''(t)}$은 $\vec{r'(t)}$의 변화량 같은 거라 $\vec{T}$에 수직함이 보장되지 않음이 자명하죠..아ㅠㅠ 계산 시러

Gradient가 대체 먼가요?

아래의 영상이 매우 친절하게 설명해줍니다. 저 같은 미알못의 하찮은 질문을 받아주시는 분이 추천한 영상인데, 영어로 되어있지만 귀에 잘 들어옵니다. 개념 정립도 잘되구요 ㅎㅅㅎ
https://www.youtube.com/watch?v=GkB4vW16QHI&feature=share
좀 더 알아둘만한 거 한 가지 적자면
그래디언트가 언덕 위에 있는 건지 아니면 z축 성분이 없는 지 책에 나오는 그림을 아무리 봐도 좀 헷갈리는데 (영어를 못해서)
그래디언트는 원래 함수보다 차원이 하나 떨어진다.. 정도? 후자가 맞습니다.

끼적.. 사실 저도 잘 몰라요.

Lagrange Multiplier Method으로 Min/Max 구하기

까먹지 말자고 끄트머리에 써봅니당 ㅎ 이름이 매우 간지나지만, 사실 고딩 때 하던 것의 다차원 버전입니다. 그런데 전 고딩 때 수학을 던졌죠 젠장;;
사실 전 앞에서부터 개념 흔들려서, 막판엔 그냥 기출을 쌩으로 외워서 좀 오개념이 있을 수도 있습니다.


[1단계] 1) 미분해서 0이나 무한이 되거나, 2) boundary인 지점을 조사합니다.
이 때
[2단계] 1)에서 구한 critical point 중 임계점을 찾아 제낍니다. 이 때 임계점을 찾는 방법은 정의를 이용할 수도 있으나, 판별식(

)를 이용하는 것이 일반적인 듯합니다.
D>0이면 극값이 존재하는데 Fxx가 양수면 Local min, 음수면 Local max입니다.

마지막으로 쭉 비교해주며 absol min/max를 찾던 후처리해주면 됩니다.


대강 생각나는 건 이정도...? 몇 개 모두가 아는 미적분학 시험기간 벼락치기 꿀팁 더 쓰자면

13.1~13.3은 공식 암기와 계산입니다. 딱히 꼬아서 안 내는 것 같으니 r,T,N,B,카파,로 이런 친구들간 관계된 식 다 외우고, 이악물고 계산하면 되는 것 같습니다.
===============================================
T와 N으로 만들어지는 osculating plane(접촉평면, 즉 곡선이 누워있는 평면)의 normal vector는 B 이고
B와 N으로 만들어지는 normal plane(곡선이 수직으로 뚫는 평면)의 normal vector는 T // r'입니다.
=================================================
14절 초반에 Continuity 증명할 때 절대부등식 몇 개 알고 있으면 입델 없이도 Squeeze Thm으로 간단히 끝낼 수 있습니다.
산술기하, 코시 슈바르츠 이런 친구들은 고등 교육과정에서 나오니 어느 정도 자유자재로 쓸 정도로는 알아둡시다. sinx, tanx 나오면 x로 막고, 이상한 수들이 제곱되어 더해져 있으면 절대부등식 한 번 써봅니다.
===================================================
Duf (아직도 얘를 어떻게 읽는지 모릅니다ㅎ;)란 친구의 전방향 존재성 보일 때는 정의로 접근함시당. fx랑 fy 쓰는 방법은 미분가능성이 증명되었을 때만 쓸 수 있습니다. 그래서 틀렸음
================================================
빨리 계절미적이 좀 끝나길 바라며 >__<

'대학교 > 미적분학2' 카테고리의 다른 글

Stewart Calculus 15.1~15.9 리뷰  (0) 2019.07.11

21일 오전 9시부터 22일 오후 9시까지 SCPC가 진행되었습니다. 작년 포스터를 잘못 봐서 토요일로 알고 있었는데 금요일이더군요;;; 토욜 약속을 다 취소하고 금요일로 잡아놔서 밤 샜습니다 ㅠㅠ

저는 SCPC 1차 온라인 예선 후기를 찾아보면서 나오는 블로그들이 너무 갓갓하셔서 [세상은 넓고 잘하는 사람은 많아] 하구 절망했었기 때문에 저도 후기 하나 남겨봅니다.
여러분은 미천한 저를 보면서 희망을 얻어가세요.

#1 오르락 내리락 (제출 2248회 맞은 사람 1059명)
BFS로 누적합-N배열을 미리 만들어 놓으면 각각의 TC들은 O(1)로 계산할 수 있습니다.
O(N * T)

특이한게 제출했을 때 1.0000X초 정도로 틀렸습니다. 계속 내다보면 한 번 즈음은 맞지 않을까 하고 5번 냈는데 안 되더라구요ㅋㅋ 2019-10-26 추가:: 삼성이 시간제한 넘어가버리면 그냥 바로 끊고 TLE 때려서 그렇다구 하네요.
결국 cin을 printf로 바꿔서 맞았습니다. 나중에 공지 뜨네요 ㅋㅋㅋ..
그러나 6번이나 틀려서 제출횟수 패널티 때문에 상당히 긴장했습니다.

#2 공 굴리기 (제출 1323회 맞은 사람 1029명
중딩 수학문제입니다. 직선경로와 회전경로 나누어서 계산했습니다.
R<h일 때 계속 답이 다르게 나와서 한참 고민했는데 (댕청..) R<h인 경우 직선 경로가 찔끔 늘어난다는 점 고려해서 계산하면 됩니다.

#3 점프 (제출 1064회 맞은 사람 107명)
못 풀었습니다 (당당)
Hap 배열을 만들어서 i번째 칸에는 1~i까지 합 넣어두고 (영알못이기 때문에 콩글리쉬 배열명을 씁니다.)
그리디하게 y 부터 y-Hap[upperbound(Hap,Hap+Hap.size(), y)-1] (씨알못이라 문법 잘 못 외워서 틀릴 수도 있습니다.)까지만 대강 구하면 될 것 같았습니다.

근데 나중에 N=20일 때 반례 생기는 거 깨닫고 던졌습니다.
사실 삼성이 10번까지만 제출 가능한데, 9번 즈음 틀릴 때 즈음 자포자기...했습니다. (사실 4번 긁고 개이득~하고 자러 갔습니다 ㅋㅋ

듣기로는 N이 작을 때는 직접 구하고 N이 특정 이상 커지면 위에 풀이처럼 그리디 하면 된다네요.

근데 그 이전에 저는 맞왜tle... 코드에도 문제가 있었나 봐요 흑.. 다 잘했는데

#4 파이프 (제출 160회 맞은 사람 25명)
와..!! 제 수면 시간을 지켜준 고마운 문제입니다. 휴리스틱 문제 보면 다들 피하시는 것 같은데, 저도 그럽니다ㅋㅋㅋ
근데 문제 읽어보니까 출제진이 제안한 답 * 2 이내이면 점수를 준다길래, 그냥 크기 순으로 정렬해서 챠르르륵 이어붙이는 코드 뚝딱하고 제출하니 186점... ㄱㅇㄷ

#5 세포 키우기 (제출 334회 맞은 사람 102명)
하.. 1차는 통과할 것 같고 자러 가야해서 문제만 읽어봤습니다. (못 풀겠다는 핑계 맞습니다.)
문제를 읽어도 아무런 생각이 들지 않았습니다.

345는 맞은 사람이 백 명 아래군요. 특히 4번 25명 ㄷㄷ...저도 그렇고 다들 아직 휴리스틱 기법에 익숙하지 않나봅니다. 저는 유명하거나 쉬운 알골만 공부하기 때문에 푼 사람 수를 보니 아직은 공부 안해도 될 것 같습니다. (따라하지 마세요)

그렇게 저는 4번의 혜자로운 부분점수 받고 386점으로 마감했습니당~ 온2차 분들 깔아드리겠습니다ㅎㅅㅎ

현 문제입니다. (이 게시판은 불친절 모드 게시판입니다)


[Baekjoon Onine Judge]


#1406 에디터


https://www.acmicpc.net/problem/1406



Problem Solving Strategy


-현 문제입니다. 리스트 써도 되고, 스택 써도 됩니다.

알고리즘 문제라기보다 구현이 까다로운 문제라 머 드릴 말씀이 없네요ㅎㅎ..

전 리스트로 풀다가 머리쓰느라 고생했는데, 큐로 풀면 어떨지는 모르겠씁니당.

0.3초라 시간 최대한 단축하려고 구조체로 구현했습니다.


저는 함수 안 쓰고 풀었기 때문에 모르겠는데

list 라이브러리나, 함수는 O(1)이어도 호출 시간이 길어서 시간 초과 날 수도 있을 거에요.

(사실 시간복잡도 계산 안해봐서 몰라요 ㅋㅋ 될 수도 이써요... 여기는 불친절모드 설명 게시판이니까용)


전체 코드 보기


자열 입력받는 거를 잘 못해서, 입력 받는데만 1시간 쏟았네요 ㅂㄷㅂㄷ...

첨 알았는데 scanf가 for문 안에 들어가니까 난리나더라구요 ㅎㅎ(?);;

gets()로 편하게 받았는데, 해당 문법이 C++14에서 삭제되서, gets()를 쓰고 싶으시다면  C++11로 제출해야합니다^^;;


...입력을 예쁘게 못 받은 듯 싶습니다....한두개 더 줄일 수 있을거 같지만

더 이상 코드를 수정할 기력이 없기에 .... 총총/


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
#include<bits/stdc++.h>
using namespace std
struct st{int f,b;char c;}editor[600009];
char ipt[100004],im[4]; int N,i,cs,sz;
int main(){
    scanf("%s\n",&ipt);    scanf("%d\n",&N);
    int asdf=strlen(ipt);
    for(i=1;i<=asdf;i++)
        editor[i]=(st){i-1,i+1,ipt[i-1]};
    editor[0].f=-1, editor[0].b=1; editor[i-1].b=-1; cs=i-1; sz=i;
    for(i=0;i<N;i++){ gets(im);
        if(im[0]=='L'&&editor[cs].f!=-1) cs=editor[cs].f;
        if(im[0]=='D'&&editor[cs].b!=-1) cs=editor[cs].b;
        if(im[0]=='B'&&editor[cs].f!=-1){
            cs=editor[cs].f;
            editor[cs].b=editor[editor[cs].b].b;
            editor[editor[cs].b].f=cs;
        }
        if(im[0]=='P'){
            editor[sz]=(st){cs,editor[cs].b,im[2]};
            editor[editor[cs].b].f=sz;
            editor[cs].b=sz;
            cs=editor[cs].b;
            sz++;
        }
    }
    i=cs; while(editor[i].f!=-1) i=editor[i].f; i=editor[i].b; 
    while(editor[i].b!=0){
        printf("%c",editor[i].c);
        i=editor[i].b;
    }
}
cs




'Algorithm > BOJ 문제풀이' 카테고리의 다른 글

[BOJ #2594] 놀이공원  (0) 2018.02.14
[BOJ #2613] 숫자구슬  (4) 2018.02.13
[BOJ #2610] 회의준비  (0) 2018.02.12

+ Recent posts