전체 글

전체 글

    NETAMlog[0] 블로그 개편의 시작 - Next.JS, TailwindCSS

    블로그 새로 만들기 이유 솔직히 티스토리로도 충분한데, 요즘 프로젝트를 안 한 거 같아서 Next.JS랑 TailwindCSS를 배운 김에 블로그를 새로 만들면 어떨까 해서 이 프로젝트를 진행하게 되었습니다. 사실 몇 주 전에 글을 올렸어야 하는데 이런저런 일들이 있어서 어느 정도 프로젝트가 윤곽이 잡히고 나서야 글을 올리게 되네요. 기술 스택 Next.JS Next.JS는 리액트 프레임워크로 기존의 리액트에 서버 관련 기능을 갖추고 SSR과 SSG를 간편하게 구현할 수 있도록 도와줍니다. 쓰다 보면 확실히 편리한데, 아주 디테일하게 들어가면 살짝 옵션 설정이 안 되는 게 아쉽더라고요(물론 지원하는 게 많아서 충분히 다른 방법을 찾을 수 있긴 합니다). TailwindCSS TailwindCSS는 부트스..

    [팁|TIP] 맥OS에서 bits/stdc++.h 사용하기

    이번에 새롭게 알고리즘을 공부할 각오를 다지며 책을 샀는데, 첫 장에 떡하니 #include 가 있더라고요. 사실 이 헤더가 존재하고, 알고리즘 사이트와 대회에서 지원되는 경우가 많다고 들어서 전에 쓰려고 했다가 MacOS에서는 자동으로 설치되는 헤더가 아니라서 쓰려고 해도 헤더파일을 못찾는다고 나오더라고요. 그래서 어떻게 추가하는지 찾아보니 Xcode의 헤더파일 폴더 안에 넣는 방법이 가장 많이 떠서 이 방법을 시도해봤는데 여전히 헤더파일이 없다고 해서 2시간 정도의 학교 동아리 시간을 날렸습니다. 그러다가 유튜브를 찾아보니 /usr/local/include에 bits라는 폴더를 만들고 그 안에 stdc++.h 파일을 넣으라는 영상을 찾았습니다. 이 방법은 실행해보니까 인식은 하는 것 같은데 굉장히 긴..

    [백준 17612번-파이썬] 쇼핑몰

    http://acmicpc.net/problem/17612 {코드} import heapq import sys input = sys.stdin.readline n, k = map(int, input().split()) cus = [] items = [] for _ in range(n): customer, item_cnt = map(int, input().split()) cus.append(customer) items.append(item_cnt) counter = [] for i in range(k): heapq.heappush(counter, (0, i)) time_needed = [0] * k finished = [] for i in range(n): t, x = heapq.heappop(counte..

    [백준 21760번-파이썬] 야구 시즌

    http://acmicpc.net/problem/21760 {코드} for _ in range(int(input())): n, m, k, d = map(int, input().split()) b = 2*d//(k*n*m*(m-1) + m*m*n*(n-1)) if b: print(m*(m-1)*n*k*b//2 + m*m*n*(n-1)*b//2) else: print(-1) {설명} A와 B의 관계를 알고, k가 주어지기 때문에 다음과 같은 식이 성립합니다. A*N*(M*(M-1))/2 + B*(N*(N-1))/2)*M*M

    [백준 21756번-파이썬] 지우개

    http://acmicpc.net/problem/21756 {코드} from math import log2, ceil n = log2(int(input())) print(int(2**int(n))) # --- # from math import log2 print(int(2**log2(int(input())))) {설명} 주어진 수가 n일때 답은 2^m

    [백준 18870번-파이썬] 좌표 압축

    http://acmicpc.net/problem/18870 {코드} n = int(input()) org = tuple(map(int, input().split())) ans = {k: i for i, k in enumerate(sorted(set(org)))} [print(ans[k], end=' ') for k in org] {설명} 압축될 숫자는 결국 주어진 값들을 정렬했을 때 그 숫자의 인덱스와 같습니다. 여기서 수들을 중복없이 정렬해야하기에 집합으로 만든 후 정렬하고 값을 키, 값의 인덱스를 value로 해서 딕셔너리를 생성합니다. 이후 각 값에 대해 딕셔너리에서의 value를 출력하면 됩니다.

    [백준 10773번-파이썬] 제로

    http://acmicpc.net/problem/10773 {코드} st = [] for _ in range(int(input())): c = int(input()) if c == 0 and len(st): st.pop() elif c != 0: st.append(c) print(sum(st)) {설명} 이 문제는 간단히 입력에 따라 행동하면 되는 문제입니다. 입력이 0이면 숫자를 빼면 되고 0이 아니면 바로 배열에 넣어주면 되죠. (0일때 무조건 지울 수 있는 숫자가 보장되긴 하는데 그냥 배열 길이 확인하는 것까지 추가했습니다. len이 O(1)이라 큰 상관은 없습니다.) 마지막에는 배열 안의 값들의 합을 출력하기 위해 sum함수를 사용하여 출력하면 됩니다.

    [백준 4949번-파이썬] 균형잡힌 세상

    http://acmicpc.net/problem/4949 {코드} while True: s = input() if s == '.': break st = [] for i in s: if i not in '()[]': continue if i == '(' or i == '[': st.append(i) elif (i == ')' and st and st[-1] == '(') or (i == ']' and st and st[-1] == '['): st.pop() else: st.append(0) break print('no' if st else 'yes') {설명} 이 문제는 간단한 스택 문제로 뭘 스택에 넣고 뭘 무시하면 되는지 파악하면 간단히 풀 수 있는 문제입니다. 먼저 문자열을 입력받은 후 하나씩 돌면서..