전체 글
-
프로그래머스 (Level 1) - 음양 더하기Coding Test/Coding Test 문제 풀이 2021. 12. 26. 14:37
문제 설명 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 풀이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어진다. 주어진 정보를 가지고 실제 정수들의 합을 구하는 문제이다. 반복문을 통해서 배열 내 절댓값 정수를 하나씩 탐색한다. 만약, signs의 원소가 false 인 경우 해당 절댓값에 -1 부호를 붙여 더해주는 방식으로 문제를 해결했다. 전체 소스코드 import java.io.*; imp..
-
프로그래머스 (Level 1) - 로또의 최고 순위와 최저 순위Coding Test/Coding Test 문제 풀이 2021. 12. 26. 00:29
문제 설명 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 최저 순위를 구하기 위해, 이중 반복문을 통해서 당첨 번호와 일치하는 번호의 수를 카운트했다. 동시에 최대 순위를 구하기 위해 0인 숫자들을 카운트했다. 위에 항목들을 모두 구하면 아래와 같이 계산이 가능하다. 1. 당첨 번호와 일치하는 번호의 수 + 0인 숫자 = 최대로 일치할 수 있는 번호의 수 2. 당첨 번호와 일치하는 번호의 수 = 최소로 일치할 수 있는 번호의 수 위의 계산식을 바탕으로 최대..
-
Delivery Together - JWT 인증방식의 로그인(3)Projects/Problem & Solution 2021. 12. 25. 21:59
개요 지금까지는 JWT의 사용 이유와 JWT의 특징을 알아보았고, 이어서 Spring Security 내에서 어떠한 절차로 인증 과정이 처리되는지 알아보았다. 이번에는 사용자가 입력한 로그인 정보를 통해 JWT를 생성해서 발급하는 과정까지 코드로 구현해보겠다. 사전 설정 1. 의존성 추가 implementation 'io.jsonwebtoken:jjwt:0.9.1' ㆍ JWT 생성을 위한 외부 라이브러리인 jjwt에 대한 의존성을 build.gradle에 추가한다. 2. JwtTokenHelper 클래스 생성 @Component public class JwtTokenHelper { private SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.H..
-
프로그래머스 (Level 1) - 다트 게임Coding Test/Coding Test 문제 풀이 2021. 12. 25. 16:53
문제 설명 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 풀이 다른 자료구조나 알고리즘이 필요한 방식이 아닌, 평범한 구현 문제였다. 문제 설명에서 주어진 보너스, 옵션에 부합하도록 점수를 조정해주면 되는 문제이다. 입력받은 문자열의 문자를 하나씩 탐색하면서 점수, 보너스, 옵션을 조건문으로 분리하며 풀이를 했다. 점수에 해당하는 인덱스를 적절하게 조정해서 보너스 또는 옵션을 부여하는 것이 핵심이었다. 전체 소스코드 import java.io.*; import java.util.*; public class Main { public int solution(String dartResult) { int[] points = new int[3]; int index = -1; for (in..
-
프로그래머스 (Level 1) - 키패드 누르기Coding Test/Coding Test 문제 풀이 2021. 12. 24. 21:05
문제 설명 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 숫자 1, 4, 7은 무조건 왼손 엄지손가락을 이용해야 하고, 숫자 3, 6, 9는 오른손 엄지손가락만을 이용해야 한다. 숫자 2, 5, 8, 0은 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용해야 하고, 키패드와 두 엄지손가락의 거리가 같다면 오른손잡이는 오른손 엄지손가락을 왼손잡이는 왼손 엄지손가락을 사용해야 한다. 이 문제에서..
-
Computer Architecture - 캐시 메모리(Cache Memory)Computer Science/Computer Architecture 2021. 12. 24. 16:44
캐시 메모리 캐시 메모리란? ㆍ 캐시 메모리란 속도가 빠른 장치와 느린 장치 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. ㆍ 캐시 메모리는 아래와 같은 예가 있다. 1. CPU 코어와 메모리 사이의 병목 현상 완화 2. 웹 브라우저의 캐시 파일은 하드디스크와 웹 페이지 사이의 병목 현상을 완화 ㆍ CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 후, 다음에 해당 데이터를 읽어올 필요가 있을 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상할 수 있다. ㆍ 캐시 메모리를 사용함으로써 속도라는 장점을 얻지만, 용량이 적기도 하고 비용이 비싸다는 단점이 있다. ㆍ CPU에서는 이러한 캐시 메모리가 2~3개 정도 사용된다...