본문 바로가기

분류 전체보기

(168)
[Next.js] CSR, SSR, SSG, ISR, On-demand ISR Next.js 기반의 프로젝트를 진행하면서, CSR과 SSR 방식에 대해서 알게 되었다. 그 외에도 SSG, ISR.. 방식이 있었고, 앞으로 렌더링 과정을 보다 잘 이해하고 효율적으로 구현하기 위하여 이를 공부해보았다. 알아두어야 할 것 Next.js는 React로 만드는 SSR 프레임워크이다. CDN (Content Delivery Network) 서버 : CDN은 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술을 의미한다. CDN 서버는 웹 애플리케이션 서버보다 항상 빠르다. WAS (Web Application Server) : 웹 애플리케이션 서버는 쉽게 말하면 생각하는 서버라고 생각하면 된다. 사용자의 요청에 따라 API 서버에 다녀와야함을 알고..
[백준] Python - 17609 회문 문제 링크 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 문제 풀이 이 문제는 회문(팰린드롬(palindrome))인지 혹은 유사회문인지 아닌지를 판단하는 문제였다. 그래서 나는 입력받은 문장에 대해서 제일 처음과 끝을 가리키는 포인터를 두 개 두고, 문장의 가운데로 좁혀가면서 확인하는 방법을 사용했다. 이 때, 주의할 점은! 앞 문자와 뒷 문자가 다를 경우에, 앞 문자 제거 후 회문인지/ 뒷 문자 제거 후 회문인지에 대한 검사를 두 번 다 해야한다. 왜냐하면 아직은 어디..
[Python] 문자열 거꾸로 출력하기 : reverse(), reversed(), 슬라이싱(slicing) 문자열 거꾸로 출력하는 방법에는 여러 가지가 있지만, 그 중 3가지 방법을 소개한다. 함수를 활용하는 방법과 리스트 슬라이싱을 통한 방법이다. reverse() reverse() 함수는 리스트에 적용되는 함수이기 때문에, 문자열을 리스트로 치환한 뒤 사용해주어야 한다. word = 'hello' temp = list(word)# 문자열을 list로 치환 temp.reverse()# reverse 함수 사용 print(''.join(temp))# olleh reversed() reversed()는 문자열에 바로 적용이 가능하다. 하지만 결과는 제너레이터(iterator 를 생성해 주는 함수)이기 때문에 join()을 통해 문자열로 합쳐주는 과정이 필요하다. word = 'hello' print(''.joi..
[백준] Python - 20291 파일 정리 문제 링크 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 문제 풀이 입력받은 문자열에서 확장자만 잘라낸다. 확장자를 키값으로 가지는 딕셔너리에 값을 업데이트 한다. 만약 이미 딕셔너리에 추가된 확장자라면 값을 1 더해준다. 딕셔너리에 없는 확장자라면, 새롭게 확장자를 키값으로 값을 1 추가해준다. 딕셔너리의 키값을 기준으로 오름차순 정렬하여, 키와 값을 출력한다. 다음엔 2번의 복잡한 과정 대신 defaultdict를 사용해 봐야겠다! 전체 코드 f..
[Python] 딕셔너리(Dictionary) 키(Key), 값(Value) 기준으로 정렬하기 딕셔너리(Dictionary) 키(key), 값(Value) 기준으로 정렬하기 딕셔너리는 { 키(Key) : 값(Value) }의 쌍으로 이루어져 있기 때문에 각 요소에 대해 정렬하는 방법이 다르다. 기본적으로 오름차순 정렬이며, reverse=True를 해주면 내림차순이 된다. 키(Key)를 기준으로 정렬 sorted(dic.items())# 오름차순 정렬 sorted(dic.items(), reverse=True)# 내림차순 정렬 값(Value)을 기준으로 정렬 sorted(dic.items(), key=lambda x:x[1])# 오름차순 정렬 sorted(dic.items(), reverse=True, key=lambda x:x[1]) # 내림차순 정렬
[백준] Python - 11279 최대 힙 문제 링크 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 문제 풀이 파이쎤 heapq 모듈만 알고 있으면 쉽게 풀 수 있는 문제였던 것 같다. 주의할 점은 heapq 모듈이 기본적으로 최소힙으로 구현되었기 때문에 최대힙으로 바꿔주기 위해 (-n, n) 처럼 튜플로 만들어서 추가해주는 것이다. 혹은 - 를 곱하여 음수로 저장하는 것도 방법이다! Heap에 (-n, n) 튜플 push() Heap에서 두번째 원소를 pop() ..
[Python] heapq Heap 파이썬의 heapq 모듈에 대해 알아보기 전에 먼저 힙이 무엇인지 알아야 할 것 같다. 힙 자료구조는 완전 이진 트리를 기초로 하는 자료구조이며, 완전 이진트리란 마지막을 제외한 모든 노드에서 자식들이 꽉 채워진 이진트리를 말한다. 그래서 이를 이용한 힙 정렬은 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로, 시간복잡도는 O(NlogN)으로 빠른 정렬에 속한다. 최소 힙(Min Heap) : 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙 최대 힙(Max Heap) : 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙 heapq 파이썬에서는 heapq 모듈을 통해 힙을 쉽게 표현할 수 있다. 내장 모듈로써 따로 설치없이 바로 사용가능하며, 리스트를 최소 힙의 형태로 정렬..
[Python] 문자열 찾기 : in, find() in 찾을 문자열 in 문자열 str = "hello python" if "py" in str : print("Found 'py'")# Found 'py' else : print("Not Found") find() 문자열.find(찾을 문자열), 문자열.find(찾을 문자열, 시작 인덱스, 끝 인덱스) : 문자열 내에 찾을 문자열이 존재하면, 찾고자 했던 문자열 첫 번째 index를 반환해준다. 그렇지 않다면 -1을 반환한다. str = "hello python" if str.find("py") > -1 : print("Found 'py'")# Found 'py' else : print("Not Found")