[프로그래머스] Lv.1 모의고사
·
Algorithm/프로그래머스 코딩테스트 문제풀이전략
https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근 방법 1. 1번,2번,3번 수포자에는 반복되는 부분이 있으므로 반복 되는 부분을 제거하고 배열에 저장한다. 2. answers 배열을 돌면서 각 수포자들이 맞은 개수를 계산한다. 3. 3명의 값을 max 연산을 통해서 비교하고, 최종 max값에 해당하는 수포자를 배열에 넣어준다. 3-2. 3명의 값이 모두 동일한 경우, 셋 다 배열에 넣어준다 (오름차순으로) import java.uti..
[프로그래머스] Lv.2 모음사전
·
Algorithm/프로그래머스 코딩테스트 문제풀이전략
https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근 방법 종료 조건 depth가 5라면 return 해준다. 점화식 문자열 = {문자열 + "A", 문자열 + "E", 문자열 + "I", 문자열 + "O", 문자열 + "U"} 재귀 메서드가 매번 실행될 때 마다 리스트에 현재 문자열을 담아주고, 문자열에는 점화식대로 더해준다. 그리고 depth를 매번 1씩 증가시켜서 종료 조건을 만족하는 경우, 마지막 문자열을 제거하고 다른 문자열을 넣..
[백준] Silver 1. Z
·
Algorithm/백준
https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 접근 방법 우선, 재귀 메서드에 대해서 정의를 하고 넘어가야 한다. func(int n, int r, int c)는 무엇일까? 2^n * 2^n 배열에서 (r,c)를 방문하는 순서를 반환하는 함수 그러고 나서 base condition을 지정해줘야 하는데, n이 0이 될때 0을 리턴하도록 설정하였다. 1사분면 -> 그대로 리턴 2사분면 -> 1사분면의 넓이 + 재귀 3사분면 -> 1,2사..
[백준] Silver 1 쿼드트리
·
Algorithm/백준
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static StringBuilder sb = new StringBuilder(); static int [][] board; public static..
[프로그래머스] Lv.2 쿼드압축 후 개수 세기
·
Algorithm/프로그래머스 코딩테스트 문제풀이전략
https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 전체 사각형을 4개로 나눈다. 2. 해당 사각형에서 모든 값이 같은 경우 해당 값으로 합축한다. 3. 4개로 나눈 후에, 또 나눌 수 있다면 분리한다. 4. 더 이상 나눌 수 없는 경우에 0과 1의 개수를 카운팅 한다. 문제를 보면, 각 4가지 영역에 대해서 값이 같은지 다른지 체크를 해야하기 때문에 재귀가 먼저 떠올랐다. 하지만, 그 다음에 막혔던 부분이 시작점 설정을 어떻게 해줄 것인가?..
JWT토큰과 RefreshToken
·
프로젝트/PICK-O
프로젝트에 JWT 토큰을 도입하기로 결정하면서, 먼저 구조에 대해서 알아보겠습니다. 구조 JWT 토큰은 헤더, payload, signature 세 부분으로 나뉘어져 있습니다. Header 헤더 값에는 JWT에서 사용할 해시 알고리즘에 대한 정보가 담겨있습니다. return Jwts.builder() .setClaims(claims) .setIssuedAt(now) .setExpiration(expireDate) .signWith(SignatureAlgorithm.HS512, secretKey) .compact(); 코드에서 HS512 알고리즘을 이용했기 때문에, 헤더값에서 해당 정보를 확인할 수 있었습니다. Payload 서버에서 사용자에 대한 데이터를 저장하는 부분입니다. 저는 사용자의 이메일과 id..
프로젝트에 JWT를 도입하게 된 과정
·
프로젝트/PICK-O
이 포스트에선 프로젝트에 JWT 인증 방식을 채택하기 까지의 과정, 그리고 도입하면서 생긴 문제들을 해결한 방법에 대해서 써보려고 합니다. 우선 JWT를 이야기 하기전에, 인증과 인가에 대한 개념을 짚고 넘어가야 합니다. 인증 (Authentication) 인증은 특정 방법을 통해서 사용자의 신원을 검증하는 것을 말합니다. 여기서 말하는 특정 방법이란, 비밀번호 인증 앱 얼굴 인식 이와 같은 여러 방법들이 존재합니다. 인터넷 뿐만 아니라, 실생활에서도 대입할 수 있는데 편의점에서 주류를 구매하기 위해서 신분증으로 인증하는 것도 사용자의 신원을 검증하는 과정이라고 볼 수 있습니다. 인가 (Authorization) 인가란, 사용자에게 특정 리소스나 기능에 엑세스 할 수 있는 권한을 부여하는 프로세스를 의..
[프로그래머스] Lv.2 신규 아이디 추천
·
Algorithm/프로그래머스 코딩테스트 문제풀이전략
https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public String solution(String new_id) { String answer = ""; new_id = new_id.toLowerCase(); new_id = level2(new_id); new_id = level3(new_id); new_id = level4(new_id); new_id = level5(new_id); new_id = level6..
[프로그래머스] Lv.1 문자열 다루기 기본
·
Algorithm/프로그래머스 코딩테스트 문제풀이전략
https://school.programmers.co.kr/learn/courses/30/lessons/12918?itm_content=course14743 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public boolean solution(String s) { boolean answer = true; if (s.length() != 4 && s.length() != 6) return false; for(char c : s.toCharArray()) { if (Character.isAlphabetic(c)) { retu..
[프로그래머스] Lv.1 숫자 문자열과 영단어
·
Algorithm/프로그래머스 코딩테스트 문제풀이전략
https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 접근 방법 1. one,two... 등등 영단어들을 배열에 저장한다. 2. 배열을 순회하면서 s에 영단어와 일치하는 문자열이 있을 때, 교체해준다. class Solution { public int solution(String s) { String [] numbers = {"zero","one","two","three","four","five","six","seven","eight","nin..