[JAVA] 프로그래머스 튜플
·
Algorithm/Programmers
import java.util.*;class Solution { public int[] solution(String s) { //String 묶음으로 갈무리 String[] lists = s.substring(2, s.length() - 2).split("},\\{"); //크기가 작은 순으로 정렬 Arrays.sort(lists, Comparator.comparingInt(String::length)); Set checkDuplication = new HashSet(); int[] answer = new int[lists.length]; int indexCount = ..
[JAVA] 프로그래머스 [1차] 캐시
·
Algorithm/Programmers
import java.util.LinkedHashMap;import java.util.Map;class Solution { public int solution(int cacheSize, String[] cities) { if (cacheSize == 0) { return cities.length * 5; // 캐시 크기가 0이면 모든 요청이 miss } int answer = 0; // LRU 캐시를 위한 LinkedHashMap 설정 Map cachedMap = new LinkedHashMap(cacheSize, 0.75f, true) { @Override protected b..
이메일 인증을 위한 Redis 설정과 문제 해결 과정
·
Backend Programming
이메일 인증을 위한 Redis 도입 배경회원가입 시 이메일 인증은 보안성과 신뢰성을 높이기 위한 중요한 과정입니다. 이를 구현하면서 "이메일 인증 정보는 오래 저장할 필요가 없으니, 영구 저장소가 아닌 일시적인 데이터를 저장할 수 있는 시스템을 선택하는 게 맞겠다"는 판단을 내렸습니다.이 과정에서 적합한 데이터베이스를 조사하던 중 Redis를 알게 되었고, 다음과 같은 이유로 선택하게 되었습니다.Key-Value 형태의 NoSQL 데이터베이스: 복잡한 관계형 데이터를 다룰 필요가 없었기 때문입니다.일시적인 데이터 저장: 이메일 인증번호와 같은 데이터는 짧은 시간 동안만 유지되므로, Redis의 TTL(Time-To-Live) 기능이 적합했습니다. Redis를 사용하며 겪은 시행착오와 해결 과정시행착오와 ..
[JAVA] 프로그래머스 괄호 회전하기
·
Algorithm/Programmers
import java.util.Stack;class Solution { public int solution(String s) { int answer = 0; int n = s.length(); if (n == 1) { return 0; // 길이가 1이면 올바른 괄호 문자열이 될 수 없음 } for (int i = 0; i stack = new Stack(); int n = s.length(); for (int i = 0; i  풀이1. 문자열의 첫번째 값이 맨뒤로 이동해야된다.2. 그리고 그 맨뒤로 이동한 스트링의 값을 확인해야된다.3. 그것을 이제 시작점과 i번째의 나눈 나..
[JAVA] 프로그래머스 할인행사
·
Algorithm/Programmers
import java.util.HashMap;class Solution { public int solution(String[] want, int[] number, String[] discount) { int answer = 0; HashMap map = new HashMap(); // 처음 10개의 아이템을 카운트 for (int i = 0; i map, String[] want, int[] number) { for(int i = 0; i  주어진 조건회원가입 일 수 10최대 수량 10회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 ..
[JAVA] 백준 색종이 만들기
·
Algorithm/Baekjoon
import java.util.Scanner;public class Main { static int blue = 0, white = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[][] list = new int[N][N]; for (int i = 0; i  풀이1. 좌우상하 모서리로 구역을 큰부분부터 나눠서 계산한다. 8*8, 4*4, 2*2, 1*1 이런식으로 진행된다.2. 그 구역을 확인했을 때 완료된다면 해당 구역은 더 이상 검사하지않는다. 느낀점코딩테스트 문제중에 이런문제들이 되게 많았던 것 ..