728x90
조회수 효자들
- VS code에서 C,C++의 format style을 커스텀하는 방법 VS code와 C++ 코드포스나 백준 문제를 풀면서 개발과 병행하기 위해 VS code를 C++ 에디터와 컴파일러로 사용하는데, formatting을 하다보면 불편한 경우가 있다. 예를들면 indent에 탭이 아닌 space를 사용하는데, 보통 개발에서 탭을 사용해야 이동이 편해지기 때문에 탭을 사용하는 나에게는 꽤나 불편한 일이 된다. 여기서 clang-format을 사용해야 하는데 구글링으로도 잘 안나와서 정리하고 넘어가려한다. 커스텀 방법 기본설정 먼저 커스텀을 하기 전에 C/C++가 기본 formatter로 지정이 되지 않은 경우 지정해주는 과정이 필요하다. prettier같은 것이 기본 formatter로 지정이 되어있으면 설정을 해도 안되기 때문이다. Ctrl + Shift + P → For..
- 백준 다이아 달성 후기, 나와 PS 다이아를 찍었다. 2021년 7월 13일에 15964 문제를 풀면서 시작한 백준이 어느덧 다이아까지 왔다. 1년 반 정도 걸렸다. 문제 당 제출 수가 상당히 많은데, DP나 그리디가 뭔지도 모를 때나 자료구조에 대한 개념이 하나도 없을 때 침착하게 배울 생각은 안하고 무작정 달려들어 얻어 터지느라 그랬다. 레이팅=실력이냐? 하면 어느 수준부터 다들 아니라 생각할 것이고 나 또한 그렇다. 그냥 오랜 기간 관심을 둔 분야에서 성과를 낸 것 같아 뿌듯해 후기를 적어본다. 레이팅 올리는 데에 도움이 많이 된 방법을 소개해볼테니 관심있으면 읽어보시라. 1. 브실 : 무엇보다 문제에 얻어터지기. 간혹 남의 풀이를 보라는 말이 있는데, 자기가 아직 브실골이고 골드 문제가 안 풀린다면 프로그래밍 사고에 도움이 되는 문..
- 백준 13705, Ax+Bsin(x)=C 개요 문제 링크 다이아 5, 임의정밀도/큰 수 연산 Ax+Bsin(x)=C를 만족하는 x를 임의 정밀도를 고려해 구하기 접근 이분탐색을 사용하는 문제라고하면 두 가지 유형이 있는데, 하나는 실행 횟수를 줄이기 위한 문제이고 하나는 오차를 완벽히 구할 수 없는 문제이다. 이 문제는 후자에 속하는데, sin(x)의 오차가 문제가 원하는 수준의 오차보다 크게 발생한다. 이분탐색이면 왼쪽과 오른쪽을 잘 설정해야 하는데, Ax=C로 가정하고 구해도 되지만, sin의 범위는 -1부터 1까지라서 다음의 부등식이 성립한다. -B c; LF A,B,C,l,r,x; A=a,B=b,C=c; LF U=1000000, D=0.5; l = (C-B)/A; r = (C+B)/A; int t=80; while(t--) { x = (..
- Subset sum problem 개요 NP-complete 집합 내 원소의 합으로 S를 구성하는 방법의 수 구하기 P, NP문제는 너무 어려워서 이해하는 데에도 시간이 꽤 오래걸렸다. 막 작성해보는 중인데 NP-hard, NP-complete나 "deterministic"에 대한 이해가 어려워서 일단 SSP부터 정리하고 가려고 한다. 접근 SSP는 NP-complete 문제이다. 다항 시간 내에 검증이 가능하고, 다항시간 내에 해결이 불가능하다. SSP의 해결방법은 크게 세 가지를 소개하려 하는데, Bruteforce, Meet in the middle, Knapsack이다. Bruteforce Meet in the middle Knapsack $O(2^n)$ $O(2\times 2^{n\over 2})$ $O(nS)$ 1. Brute..
- VS code의 html tag 자동완성을 웹에서 구현하기 자동완성 오늘은 어제 만든 코드를 몇 줄 소개하려 한다. VS code를 사용하면 아래와 같은 자동완성 기능을 사용하는데, 손목에 부담이 덜 갈 만큼 정말 편하다. 만약 html을 이용하는 블로그를 사용하거나 html문서를 작성할 일이 많다면 이 기능이 정말 필요한데, 그렇다고 편집기를 깔아서 작성한 다음 복붙을 하자니 그 과정마저도 미친 귀찮음이 지배해버리거나, 아이패드로 작업하는 경우에는 마땅한 편집기를 찾지 못해 일일히 를 쳐야하는 번거로움을 느껴야만 한다. 이걸 1시간만에 만들었는데 지난 1년간 일일히 를 쳐왔던 시간을 생각하면 이런 바보가 어디 없다. 코드 서론을 길게 할 것 없이 코드로 가자. Contenteditable을 적용한 div가 기준인데 input태그나 textarea에서는 안 먹힐..
- Next.js에서 api를 쓰는 이유 Next api? 웹 개발을 할 때는 Express & EJS를 이용해 프레임워크 없이 사이트를 만들곤 한다. 그런데 최근 SPA (single page application)의 장점을 깨닫고 한 달쯤 전부터 Next라는 프레임워크를 사용해보고 있는데, 풀리지 않는 궁금증 중 하나가 왜 api를 사용하냐? 하는 것이다. 예를 들면 json 파일을 읽거나 쓸 때, 그냥 fs 쓰면 안되나? 싶은데 그게 안된다는 걸 오늘 정확히 알았다. Client vs Server 구글의 힘을 빌려 개발에 달려들다 보면 기초 지식이 많이 부족해지는데, 그 중 가장 중요한 개념이 client와 server를 구분하는 것이다. Client와 Server는 각각 프론트, 백으로 생각해도 되는데 이게 단순히 디자인이나 웹 구성의 ..
- 백준 26156, 나락도 락이다 개요 문제 링크 골드4, DP, 조합론 연속에 상관없이 추출한 부분문자열 중 끝이 ROCK인 문자열의 개수 접근 DP보다는 조합론을 쓰는게 더 깔끔하고 간단하다. 핵심은 끝이 ROCK이라면, R을 선택한 위치 뒤의 R은 선택하지 않고, R을 선택한 위치 앞의 모든 문자는 스위치처럼 선택/안선택 을 결정해야 하니까 2^(자리수) 만큼의 경우가 있다는 것이다. 이게 무슨 말이냐. 아래 예시를 보자. ZROCROCK 앞의 R을 선택하면 뒤의 R은 선택하지 않는다. 그래서 뒤의 R을 선택했다면, 앞의 R을 선택하는 것은 자유이다. 따라서 뒤의 R을 선택하는 경우는 ZROC에 대해 스위치를 껐다 키므로 16개가 된다. 다음으로 O를 선택하면 앞의 모든 R의 경우의 수를 더할 수 있다. 앞O는 앞R, 뒷O는 앞R,..
- 백준 1071, 소트 개요 문제 링크 플래 5, Greedy a[i+1] != a[i]+1이면서 사전순으로 가장 앞서게 정렬하기 접근 그리디한 인간이 되자. 수를 꺼내서 출력한다고 생각할 때, 가장 작은수부터 꺼내는 것이 가장 유리하다. 이 수를 X라고 해보자. 꺼낼 수 없는 첫 번째 경우. X가 (이전 수)+1인 경우에는 X+1부터 시작되는 최솟값을 다시 구한다. 이게 왜 되느냐? X보다 작은 수는 없다. 그러면 다음 최선 선택지는 항상 X보다 크다. 꺼낼 수 없는 두 번째 경우이자 이 문제의 핵심. X와 X+1만 남은 경우이다. 예를들어 2,2,3,3만 남은 경우 2를 먼저 뽑을 수 없다. 어떻게 뽑아도 2뒤에 3이 오는 경우가 생긴다. 그럼 두 번째 경우를 커버하기 위해 X+1부터 최솟값을 구한다. 그 값을 T라 했을 ..
- 백준 3652, 새트리 개요 문제 링크 골드 5, 재귀 모든 유리수를 커버하는 이진트리의 노드 위치 찾기 접근 식은 어려우니 보지말고, 트리의 그림을 잘 보고 규칙성을 판단해보자. 오른쪽 트리는 분자가 크고, 왼쪽 트리는 분모가 크다. 그리고 분자와 분모가 같은 경우는 루트노드 뿐이다. 그러면 분자가 크다면 오른쪽으로, 분모가 크다면 왼쪽으로 간 것인가? 하는 느낌을 받을 수 있다. 그럼 while문을 쓰면서, 분모와 분자가 같으면 멈추고, 분자가 클 때와 분모가 클 때 서로 다른 변형을 주면 되지 않을까? 그게 됐다. 만약 분자가 크다면 R을, 분모가 크다면 L을 string에 넣어준다. 그리고 다음 행선지는 각각 {u,d}={d-u,u},{d,u-d}로 찍어주니 맞았다. 왜 될까? 천천히 식을 뜯어보자. 2/1의 left ..
- 백준 16115, 팬이에요 개요 문제 링크 골드 3, 기하학 자취가 원이 되도록 회전하는 최소 각도 구하기 접근 접근 자체는 매우 쉬움, 우선 원점으로부터의 거리가 가장 먼 점들만 고려해야 함. 이유는 더 짧은 점은 아무리 고려해도 가장 큰 원을 만들지 못하기 때문. Class를 처음 써보면서 operator도 써보고 CCW도 써보고 해봤는데 생각보다 부질없는 일이었음. 각도만 고려하면 돼서 매우 단순함. 핵심은 두 점의 사잇각을 생각해야 함. x축으로부터의 각에 대해 정렬한 다음 두 점의 사잇각의 최댓값이 정답. 처음에는 2π와 비교하면서 최솟값을 업데이트하려 했는데 틀렸음. 하지만 여기까지 하면 정답이 안나옴. 아래 케이스를 보자. // (0,1) (1,0) output = 90 answer = 270 문제는 angle[0] ..
인생공부 시리즈
- 07. 재능과 노력, 이상과 현실 1. 재능과 노력"OOO도 재능이다" 는 말이 자주 들린다. "재능충" 이라는 단어는 처음에는 실력자를 비꼬는 단어였다가 이제는 압도하는 실력에 대한 찬사의 의미로도 사용된다. 사람들은 노력 만능주의 (노력파) 와 재능 만능주의 (재능파) 의 두 편으로 갈라져 어디까지가 재능인가? 하는 문제를 두고 싸운다. 재능1:노력9, 이게 내 생각인데 이상적이라고 보인다면 글을 끝까지 읽어보기를 바란다. 최근의 이런 대립은 연세대 심리학과 김영훈 교수의 "노력의 배신" (2023.07) 에서 시작된다. 물론 이전부터 노력과 재능에 대한 의견 대립은 존재했지만, "노력할 수 있는 것도 재능이다" 라는 말이 본격적으로 나오게 된데는 이 책에 대한 오해와 잘못된 재생산이 있었다. 넘어가기 전에 이 말의 의미를 되짚어 풀..
- 06. 반짝 스타, 느림의 미학 1. 유튜버유튜버는 이렇게 탄생했다. 2010년대, 인터넷 방송은 매년 연례행사처럼 뉴스거리가 되던 음지의 서브컬쳐였다. 도무지 변할 것 같지 않던 판은 유튜브라는 거대 플랫폼이 도입되며 하나의 대국민적 문화가 되었다. 이전에는 TV방송인과 다른 세상에 있던 인터넷 방송인이라는 직업은 2010년대 후반을 기점으로 경계를 허물고 융화되었고, 이제는 하나의 문화예술인의 형태로 자리잡았다. 그 배경에는 다수의 소비자가 내놓는 통제할 수 없는 의견의 갈래와 그런 엄격함 속에서도 끊이지 않는 매력적인 근무 형태가 있었다. 유튜버는 기존 직업의 틀을 깨는 새로운 작업환경을 제공한다. 풀 재택, 유연 근무, 시간과 장소에 상관 없이 다수의 대중 혹은 소수의 매니아를 만족시키는 컨텐츠가 경쟁력이 된다. 실적, 출퇴근,..
- 05. 푸바오 논란, 병든 대한민국 최근 동물원 판다가 총선만큼이나 유명하다. 나는 판다 한마리에서도 나타나는 대한민국의 병든 상황을 보고 있다. 오늘 할 얘기들은 주제가 주제인만큼 다른 글과 달리 매우 직관적이고 단순하다. 1. 감정 이입과 코로나 블루 감정의 이입은 동일시와 같다. 동일시의 과정에서 인간은 관찰하는 대상에 자신을 투영하는데, 대부분 자신의 상처받은 유년기를 투영한다. 푸바오는 왜 국민적 관심을 받게되었는가? 해서 찾아보니 최초의 국내출생 판다, 가장 먼저 눈을 뜬 판다라는 표면적 이유가 있지만 보다 중요한 것이 있었다. 코로나 시기에 태어나 국민의 코로나 블루를 달래주었다는 것이다. 첫번째, 왜 전염병과 격리는 사람을 우울하게 만들었을까. 사람들이 오프라인 만남과 모임을 통한 해소와 분출에 익숙해져 있기 때문이다. 그것..
- 04. 공부를 해서는 안 된다 1. 쾌락과 한계효용 사람은 배움이 부족할 수록 주변 사람으로부터 자신의 삶을 채우려 든다. 인간의 돈, 명예, 능력은 유한하기 때문이다. 유한함은 쾌락의 속성이며, 쾌락에는 한계 효용이 있다. 쾌락은 인간에게 사유의 기회를 줄 뿐 그 자체가 사유가 될 수는 없다. 사유하지 않은 인간의 쾌락이 한계 효용을 다하면 그 자리에는 핑계와 합리화, 변명만이 남고, 추해지지 않으려고 발버둥 치며 누군가는 거짓말로 자신의 빈 부분을 채우고, 또 누군가는 주변인의 삶에 자신을 대입하며 살아간다. 어디 법원 판사가 5살짜리 아들에게 우리나라 사법계의 고충을 말할까? 혹은 국민들의 준법정신에 대해 말할까? 그저 피곤한 심신을 현관에 벗어두고 아들이 받아온 칭찬 스티커, 선생님께 혼난 일을 들으며 햇님 유치원의 판사가 되..
- 03. 경쟁심이 만든 병든 사회 1. 경쟁심의 학습 한국은 빈곤과 투쟁의 시대를 겪었다. 부족했던 교육과 좁아지는 기회 늘어가는 나이 속에 사회는 마치 펜싱 경기처럼 찰나의 순간에 남을 찔러야 하는 생존을 위한 투기장이 되었다. 펜싱의 칼 끝에 서서 이 사회를 관통한 세대가 있다. 불의에 맞서 항거하던 세대이면서 젊을 때는 평균 성장률 10%대의 고성장 저개발 국가에서 무수한 기회를 누리고, 나이가 들며 변해가는 사회에서 좁아진 기회와 과도한 경쟁에 지쳐 세속적인 가치관을 가진 세대. 한때는 30대 80년대 학번 60년대생이라는 의미로 386세대라 불렸고, 그 다음은 586, 이제는 60대에 접어들며 86세대라 불리는 사람들, 우리 20대의 부모세대이다. 부모는 가치관을 제1유산으로 남긴다. 부모의 가치관은 자녀를 통해 답습된다. 30..
- 02. Giver를 위한 사회, 애덤 그랜트의 조직심리학 1. 기버, 테이커, 매처 이전 글에서 행위의 비물질적 목적추구와 의식적 반성을 지속하는 것을 사유라고 하였고, 사유하는 사람이 인류의 존엄성을 지키는 존재가 된다고 하였다. 오늘은 조금 어려운 얘기에서 벗어나 표상적인 사회에서의 실천적 사유의 방법론을 잘 제시해주는 애덤 그랜트의 조직심리학에 대해 말해보려고 한다. 기버, 테이커, 매처는 주고 받음의 양에서 비롯되는데, 객관적으로 남에게 내어주는 성격이라면 기버, 같다면 매처, 주는 것이 적다면 테이커가 된다. 2. 사유와 이타성 기버가 자본주의 사다리의 맨 아래와 위를 모두 차지하고 있다는 사실은 무언가를 내어주는 Give의 양가성을 보여준다. 나는 이러한 이타성에 타의성과 자의성, 반자의성이 있다고 생각한다. 단순히 돕는 것이 좋아서, 혹은 습관이 ..
- 01. 악의 평범성과 인간의 존엄성 1. 악의 평범성 20대 초반이었던 나의 정체성을 흔들었던 질문은 사회의 소외계층의 일반적 특성에 대한 것이었다. 가난한 자는 교육받지 못한다. 교육받지 못한 자는 범죄를 저지른다. 이런 추론은 옳지 못한 것이라 배웠지만 내가 본 세상에선 합리적인 추론이었다. 결국 사회적 약자는 악인인가에 대한 질문은 내 정체성을 흔드는 것이면서 나의 가치관을 결정하는 중요한 질문이었다.여기에 명쾌한 해답을 내려준 것이 한나 아렌트의 악의 평범성에 대한 것이었다. 나치의 유대인 학살이 그저 군부 사회에서 성공하기 위해 상관에 충성하던 행위의 일부였음을 밝히며 사유하지 않는 인간은 누구든 악마가 될 수 있다고 했다. 2. 인간은 선한가? 악한가? 일반적으로 인간의 행위의 목적에 대해 논할 때는 성선설과 성악설이 중심이 된..
728x90