본문 바로가기
반응형

전체 글160

로그인 로직 구현해보기 (jsp, java, tomcat) 정리 프로젝트중 로그인 부분을 구현해야 하는 것이 있었다. 당시 로그인 부분보다 더 급한 부분을 먼저 처리 하느라 로그인의 경우 보안적으로 무방비한 상태였다. 유저의 id, password를 받아 db 정보와 대조해본 뒤, 맞으면 넘어가고 틀리면 다시 로그인 페이지로 넘기는 단순한 로직인데 이때 id, password가 전혀 암호화가 이뤄지지 않은 상태로 네트워크 상을 돌아다니게 된다. 개발자 친구는 적어도 md5로 암호화 한뒤 보내는게 어떻겠냐고 제안할 정도였다. 그래서 마음 한켠으로 ‘아 언젠간 고쳐야지...’ 같이 생각만 하고 있다가 이번에 고치게 됐는데, 이거에 대해 간략히 정리한다. 지금 만들고 있는 웹은 java + jsp + tomcat으로 흔히들 사용하는 spring 이 아니라서 java,.. 2022. 1. 15.
Linked List Random Node [leetcode] 문제 Given a singly linked list, return a random node's value from the linked list. Each node must have the same probability of being chosen. Implement the Solution class: Solution(ListNode head) Initializes the object with the integer array nums. int getRandom() Chooses a node randomly from the list and returns its value. All the nodes of the list should be equally likely to be choosen. Example 1.. 2022. 1. 7.
Car Pooling [leetcode] 문제 1094. Car Pooling Medium Example 1: Input: trips = [[2,1,5],[3,3,7]], capacity = 4 Output: false Example 2: Input: trips = [[2,1,5],[3,3,7]], capacity = 5 Output: true Constraints: 1 2022. 1. 7.
거리두기 확인하기 [프로그래머스] 문제 풀이 문제 풀이 자체가 별로 없다. P의 위치를 좌표 평면에서 x=0, y=0 이라고 했을때 맨하튼 거리가 2 이내 인 곳은 총 12 군데로 west ⇒ [-2,0] , [-1,0] southwest ⇒ [-1,-1] south ⇒ [0, -2] , [0, -1] southeast ⇒ [+1, -1] east ⇒ [+2,0], [+1,0] northeast ⇒ [+1,+1] north ⇒ [0,+2], [0+1] northwest ⇒ [-1,+1] 이렇게 총 12개의 공간을 확인해야 한다. 1, 3, 5, 7 번의 공간의 경우 맨하튼 거리가 1인 경우 P가 존재한다면 무조건 False 맨하튼 거리가 2인 경우 P가 존재한다면 중간 공간의 값이 X가 아니라면 무조건 False 2, 4, 6, 8 번의.. 2021. 11. 29.
다음 뉴스 댓글 가져오기 예전에 네이버 댓글을 모았었는데~ 네이버 기사 댓글 가져오기 네이버 기사 댓글 가져오기 네이버 기사 댓글 가져오기 들어가기 전 네이버의 robots.txt 에 대해 먼저 숙지하자. 사용 언어 및 모듈 - python 3.7 - request = request 요청을 보내 html 값을 가져오기 .. hoonzi-text.tistory.com 다음 댓글도 모아서 뭔갈 하면 좋을 거 같아서 이번엔 다음 댓글을 모아봤다. 이번에도 역시 셀레니움은 쓰지 않고 오직 request만 조져서 가져와볼 생각이다. 우선 필요한 모듈들을 불러와 보자. import pandas as pd # 가져온 데이터를 테이블(rdbs) 형식으로 표기 및 저장 from bs4 import BeautifulSoup # html 을 파싱하.. 2021. 11. 26.
땅따먹기 [프로그래머스] 문제 풀이 어... 처음에는 dp처럼 이전 계산 결과를 다 저장한다음에 마지막에 경로값을 쓰는? 문제인줄 알았으나 읽다보다 더 쉬운문제였다. 마지막에 계산 결과중 제일 큰값을 출력하면 되는 문제다. 그렇다면 이전 결과중에 제일 큰값 들만 저장하면서 진행하고, 마지막 결과값중에 제일 큰값을 찾아내면 된다는 얘기다. row의 각 값은 이전 값들과의 계산중 가장 큰값만을 저장하면 된다. [1, 2, 3, 5] [5, 6, 7, 8] → 이 단계에서 계산을 보면 (자신의 index와 같은 index는 피해서) 5 → [5+2, 5+3, 5+5] → max=10 6 → [6+1, 6+3, 6+5] → max=11 7 → [7+1, 7+2, 7+5] → max=12 8 → [8+1, 8+2, 8+3] → max=1.. 2021. 11. 26.
후보키 [프로그래머스] 문제풀이 이건 일단 "어떤 컬럼을 써서 후보키를 만드는지" 가 관건이다. 어떤 컬럼을 사용해야 하는지 모르기 때문에 더할 컬럼들 (0번 컬럼 + 1번 컬럼 등)의 후보를 만드는게 첫번째다. 또한 중복이 없어야 하며, 더하는 컬럼의 순서가 중요하지 않다. (0번 컬럼 + 1번 컬럼) 을 이용해 키를 만들어 구분하나 (1번 컬럼 + 0번 컬럼) 을 만들어 구분하나 똑같다. index 값을 이용해 더할 컬럼의 후보를 만들어 준다. com_len = len(relation[0]) from itertools import combinations # 중복이 없는 후보군들 반환 하기 위한 combination 임포트 com_list = [] index_list = [i for i in range(com_len)] fo.. 2021. 11. 25.
순위 검색 [프로그래머스] 문제 풀이 정리 문제 설명 보고 개쉽네ㅋ 하고 입장했다가 대가리 깨진 문제다. 일단 문제자체는 어렵지 않다. 조건에 맞는 score들만 가져와서 개수를 센다. 끝 :) 그렇게 안일하게 보고 코드를 짤 경우 for loop *4 의 지옥을 보고 어...? 이거 괜찮은가? 하면서 돌리게 된다. 물론 그럼 시간 초과 난다. (테스트는 통과하지만 효율성에서 막힌다.) 그럼 두번째 방법으로 생각 한 것이 json처럼 depth 구분이 있게끔 만들어서 조건에 맞는 애들만 좀 쉽게 관리하자! → dictionary 형태로 key:value 로 만들어 관리 but, 마지막 depth 의 score_list에서 특정 값이상의 숫자 개수를 반환하는데 있어서 효율성 탈락 자, 그럼 score_list에서 빠르게 꺼낼 방법을.. 2021. 11. 22.
주식 가격 [프로그래머스] 코드 def solution(prices): answer = [] prices = list(reversed(prices)) for index, price in enumerate(prices): if len(answer) == 0: answer.append(index) else: flag = False for i in range(index-1, -1, -1): if prices[i] < price: answer.append(index-i) flag = True break if not flag: answer.append(index) answer = list(reversed(answer)) return answer 문제 풀이 스택/큐 문제라는데 어떻게 써야할지 감이 안잡혔다. (지금도...) 첫번째 시도에선 .. 2021. 11. 17.
반응형