본문 바로가기

전체 글101

백준 2884번 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로.. 2022. 8. 1.
JSON이란? JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다. JSON을 사용하는 이유? 어떤 언어에서든 데이터 구조와 실제 데이터를 다른 언어 및 플랫폼에서 해석 가능한 형식으로 전송하는 것을 가능케 하는 데이터 교환 포맷이다. 인간이 읽을 수 있는 문서로 이루어졌기 때문입니다. 코딩도 더 적게 필요하고, 처리 속도가 빠른, 경량 언어이다. JSON 데이터 유형과 예시 문자열 숫자 부울 Null 객체 배열 1. 문자열 JSON의 문자열은 유니코드 문자로 구성되며, 백슬래시(\) 이스케이프 문자를 사용합니다. 예시 { "name" : "Jones".. 2022. 7. 28.
JWT란? 인증의 종류 1. 세션 인증 기본적으로 브라우저에서 사용자가 인증(Authentication)을 수행하면 서버에서는 사용자의 정보를 저장하고, 그 응답으로 JSESSIONID 라는 키를 이용해 클라이언트(사용자) 브라우저의 쿠키에 세션의 정보를 저장하게 됩니다. 이후 클라이언트는 브라우저 쿠키에 저장된 JSESSIONID 로 저장된 세션 정보를 이용해 인가(Authrization)된 정보에 접근할 수 있게 됩니다. 2. 토큰 인증 토큰인증 방식은 사용자가 인증을 수행하면 서버에서는 토큰을 생성한 뒤에 저장하지 않고(stateless) 토큰값을 사용자의 브라우저에게 응답합니다. 이 토큰 값을 사용자가 인가된 사용자만 사용할 수 있는 서비스를 요청할 때 함께 보내게 되고, 서버에서 이 토큰을 의미 있는 값(.. 2022. 7. 27.
Django에 관해 알아보자. Django란? 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크이다. Django의 장점 장점 관리자 화면 - 거의 시간을 들이지 않고도 사용할 수 있는 수준의 관리자 화면 사용 및 Customize 이 가능하다. 활발한 커뮤니티 - 다양한 케이스의 문제와 해결책을 찾아볼 수 있다. ORM - models.py에 클래스로 작성하면 데이터베이스 테이블을 자동으로 생성해준다. 자체적으로 지원하는 기능들이 많고, 기능이 복잡해지면 app을 사용해 분리할 수 있어서 확장성이 좋다. Django의 프로세스 동작 순서 유저가 특정 url로 요청을 보냅니다. 서버에 접속하면 urls.py는 url요청에 따라 view를 분배한다. 호출된 뷰는 요청에 따라 적절한 .. 2022. 7. 26.
백준 3003번 파이썬 문제 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오. ''' 올바른 세트 1 1 2 2 2 8 ''' # 예제 입력 1 >>> 0 1 2 2 2 7 # 예제 출력 1 1 0 0 0 0 1 # 예제 입력 2 >>> 2 1 2 1 2 1 # 예제 출력 2 -1 0 0 1 0 7 코드의 시작은 리스트 .. 2022. 7. 25.
파이썬에서의 swich문? 글을 작성하기에 먼저 파이썬에서는 swich문 이란 없다... 하지만 if문을 사용해 구현할 수 있는 방법이 있다. 함께 알아보자! swich문과 if 문의 차이란? switch 문은 if문과 같이 조건 제어문에 속합니다. 하지만 switch문은 if문처럼 조건식이 =와 같은 부등식을 사용할 수는 없다. 오로지 ==만 비교할 수 있는것이 switch 문이다. //문법 switch(변수){ case 값1 : 실행문; break; case 값2 : 실행문; break; default : 실행문; } 같은 조건에서의 swich 문과 if 문, dictionary를 이용한 예시 예시 swich = javascript if = python dictionary = python 위의 문제를 풀어보도록 하자. 1) s.. 2022. 7. 24.
boolean 을 사용한 클릭 이벤트(좋아요, 팔로우) 백엔드에서 boolean 을 사용해 좋아요, 팔로우 버튼을 누르면 이벤트가 생기도록 해보자. 프로젝트 특성상 좋아요, 팔로우 버튼을 누르면 window.location.reload() 을 통해 이벤트가 반영되도록 하였다. 백엔드 models.py 먼저 코드의 이해를 위해 models.py 의 모델과 필드 사진을 보고 시작해보자. User 모델 안에 필트로 follow 와 like 가 있다. m to m 필드는 기본적으로 symmetrical=True 이기 때문에 False로 바꾸어 주어서 좋아요 버튼을 누르면 누른 사람, 받는 사람 모두의 id 가 추가 되지 않도록 했다. 이제 views.py 로 돌아가서 boolean 코드를 작성해 보도록 하자. views.py views.py 에서는 db에 저장된 좋.. 2022. 7. 20.
시간 복잡도 / 공간 복잡도 알고리즘의 의미 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. [표준국어대사전] 알고리즘은 좋은 프로그램을 구현하기 위해 필수적이다. 하나의 문제도 여러 각도로 문제를 풀 수 있다. 시간 복잡도 판단하기 시간 복잡도의 의미 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계를 말합니다! 입력값이 2배로 늘어났을 때 문제를 해결하는 데 걸리는 시간은 몇 배로 늘어나는지를 보는 것이다. 계산 방법 바로, 각 줄이 실행되는 걸 1번의 연산이 된다고 생각하고 계산하시면 됩니다. max_num = array[0] # 연산 1번 실행 for num in array: # .. 2022. 7. 20.
CORS 교차 출처 리소스 공유 (Cross-Origin Resource Sharing, CORS) CORS 정책은 우리가 가져오는 리소스들이 안전한지 검사하는 관문이다. cors는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. * 기본적으로 브라우저는 다른 출처의 HTTP 요청을(다른 출처의 리소스) 제한하는데, 제한을 풀어준다라고 생각하자. 웹에는 크게 SOP(Same Origin Policy)와 CORS(Cross Origin Resurce Sharing) 두가지 정책이 있다. 프로토콜, 포트, 호스트 모두 일치한다면 Same Origin이며, 이들중 하나라도 일치하지 않으면 Cross O.. 2022. 7. 19.