본문 바로가기

분류 전체보기

(92)
프로그래머스_로또의 최고 순위와 최저 순위 로또의 최고 순위와 최저 순위 문제 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 ..
셀프 모바일청첩장 만들기!(feat. Github) 개발자니까 모바일 청첩장은 내가 만들어볼게 실수였다... 나는 백엔드 개발잔데 화면 구성은 어떻게 하지...? 그래도 학교 다닐때 html이랑 javaScript를 잠깐 배웠으니...가능할지도...???????? 라는 생각으로 여러 레퍼런스들을 찾아봤다. 그리고 디자인 부터 시작했다. 1. 구성 먼저 디자인을 구성하기 전에 우리가 모바일 청첩장에 담고 싶은 내용들을 생각해봤다. 기존 업체들의 틀에 박힌 모바일 청첩장보단 내가 만들었으니 차별점을 두고 싶었다. BGM없고 부모님이 해외에 계시기에 연락처보단 카카오 연동이 필요했다. 간단한 메세지와 전달해야 하는 내용들만 담고 싶었다. 2. 타겟 우리의 청첩장을 누구에게 전달해야 할까 생각해봤다. 친구 지인 회사 친인척, 부모님 지인 크게 타켓은 [친구, ..
프로그래머스_제일 작은 수 제거하기 제일 작은 수 제거하기 문제 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한사항 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 입출력 arr return [4,3,2,1] [4,3,2] [10] [-1] 입출력 예 설명 입출력 예 #1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 풀이 과정 arr배열의 0번째 index값을 최소 값으로 초기화 하고 arr..
프로그래머스_완주하지 못한 선수 항해 8일차 1주일간 총 40문제(기본 28문제 + 심화 12문제)를 해결하는 목적으로 팀원들과 함께 해결중이며 매일 각자 1~2개씩 본인이 구현 했던 코드를 리뷰하고 있다. 완주하지 못한 선수 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1..
프로그래머스_나누어 떨어지는 숫자 배열 항해 6일차 오늘도 알고리즘 문제를 풀고있다. 전에 했던게 조금씩 생각이난다. 전에도 잘하진 못했지만 다시 조금씩 손에 익히려고 노력중이다. 문제를 풀어가며 생각이 안나는 문법은 찾아보면서 하는중이다. 알고리즘을 풀어보니 역시나 어렵다.. 차근차근 하나씩 생각해보며 풀어나가는중이다.. 알고리즘은 역시 꾸준하게 해야한다. 나누어 떨어지는 숫자 배열 문제 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다..
API GateWay 1. API Gateway란? 최근 많은 서비스들이 독립적인 기능을 수행하는 작은 단위의 서비스들로 구성된 마이크로 서비스 아키텍처(Micro Service Architecture) 형태로 구축되면서 서비스의 복잡도를 줄일 수 있게 되었고, 변경에 따른 영향을 최소화하면서 개발과 배포를 할 수 있다는 장점도 얻게 되었다. 하지만 여기서 말하는 작은 단위의 서비스가 50개, 100개가 되었을 때, 이 많은 서비스들의 엔드포인트를 관리하는 데 있어서 어려움이 생기고, 또 각각의 서비스마다 공통적으로 들어가는 기능(ex 인증/인가, 로깅 등)들을 중복으로 개발해야 한다는 문제점이 발생한다. 이러한 문제점을 해결하기 위해 등장한 것이 바로 API Gateway로 API Gateway는 아래 이미지와 같이 클라이..
Spring RefreshToken 구현 JWT는 한번 발급되면 만료 전 까지 삭제할 수 없다. 토큰 재발급의 경우 다양한 방식으로 구현될 수 있으며, 해당 포스팅에서 구현된 방식은 여러 방식 중 하나이다. Refresh Token을 사용하는 이유 access token은 발급 후 서버에 저장되지 않고 해당 토큰으로 사용자 권한을 인증하는 특징이 있다. 만약 access token이 탈취되면 토큰이 만료되기 전까지 해당 토큰을 갖고 있다면 누구나 권한 인증이 가능하다는 문제점이 있어 이를 보완하기 위해 access token의 만료 기간을 짧게 주는 방법이 있다. 하지만 사용자 측면에서는 토큰이 만료될때 마다 다시 로그인을 하여 토큰을 발급 받아야하는 불편함이 발생한다. 이를 해소하기 위해 refresh token을 사용하는데, access t..
Redis 백업 및 복구(RDB, AOF) Redis를 작년 프로젝트에서 사용해보고 이번 프로젝트에서도 사용하기로 했다. Redis는 인메모리 데이터 저장소로 읽기 성능이 뛰어나 캐싱, 세션 저장소 등 다양한 곳에서 많이 사용된다. 하지만 인메모리 데이터 특성상 휘발성으로 종료되는 경우 데이터가 유실된다. 기존 프로젝트에서는 현재 채팅방 인원수를 카운팅 해야하기에 유실되도 상관이 없었다. 이번 프로젝트에서는 속도 개선과 DB에 데이터를 저장하게 되면 너무 방대한 양의 데이터가 저장되고 조회수 어뷰징 방지, 최근 조회 글, 다운로드 글 등 데이터가 유실되면 안되기에 데이터를 다시 DB에 저장해야 하나 고민중에 Redis에서 RDB와 AOF 라는 방법으로 백업이 가능하다고 한다. RDB와 AOF도 각각의 장단점이 있으니 비교하면서 상황에 맞게 적절한..
QueryDSL 기본문법 1. Q-Type Q-Type 인스턴스를 사용하는 방법은 2가지 방법이 있다.QMember qMember = new QMember("m"); // 별칭 직접 지정 QMember qMember = QMember.member; // 기본 인스턴스 사용직접 별칭을 넣어서 사용해도 괜찮지만 기본 인스턴스에서 생성된 별칭을 사용하는 것을 권장한다. 별칭을 직접 지정하는 방법은 같은 테이블을 조인하는 경우에 쓰인다. 2. 검색 조건 Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.group.eq("class1"))) .fetchOne(); where절에는 and나 or을 사용할 수 있..
spring 휴대폰 번호 인증하기(Naver SMS) 진행중인 프로젝트에 이메일or휴대폰 으로 인증을 구현할 일이 생겼다. 먼저 이메일 인증을 해봤고 휴대폰 인증까지 해보려고 한다. 많은 구글링을 했고 대부분 coolsms를 많이들 사용했는데 NAVER CLOUD에서도 지원하는 SMS API가 있기에 조금 더 친숙?한 네이버 클라우드를 선택했다. 1. NAVER SMS API 환경설정 1-1. 먼저 네이버 클라우드 플랫폼에 가입 후 콘솔로 이동 https://www.ncloud.com/ https://console.ncloud.com/sens/home 2-2. Simple & Easy Notification Service (SMS 서비스의 이름이다.) 의 Home을 찾아가 프로젝트 생성하기를 누른다. 2-3. 원하는 설정값을 입력하고 생성한다. 나는 SMS..