[프로그래머스/Lv.1] 개인정보 수집 유효기간 (Java)
·
✏️/Programmers
개인정보 수집 유효기간https://school.programmers.co.kr/learn/courses/30/lessons/150370풀이한 달 = 28일 -> 모든 날짜를 일(day)로 변환해서 계산static int convert(String date) { String[] d = date.split("\\."); int y = Integer.parseInt(d[0]); int m = Integer.parseInt(d[1]); int day = Integer.parseInt(d[2]); return y * 12 * 28 + m * 28 + day;} `terms`를 `HashMap`에 저장Map HM = new HashMap();for (String t : terms) { ..
[프로그래머스/Lv.1] 성격 유형 검사하기 (Java)
·
✏️/Programmers
성격 유형 검사하기https://school.programmers.co.kr/learn/courses/30/lessons/118666풀이`survey` + `score``choice`: 1 -> 앞 문자 +3`choice`: 2 -> 앞 문자 +2`choice`: 3 -> 앞 문자 +1`choice`: 4 -> 0`choice`: 5 -> 뒤 문자 +1`choice`: 6 -> 뒤 문자 +2`choice`: 7 -> 뒤 문자 +3ex. survey = "AN" / choice = 2 -> 앞 문자(R) +2점for (int i = 0; i 코드import java.util.*;class Solution { public String solution(String[] survey, int[] choice..
[프로그래머스/Lv.1] 비밀지도 (Java)
·
✏️/Programmers
비밀지도https://school.programmers.co.kr/learn/courses/30/lessons/17681풀이`map = arr1[i] | arr2[i]`: 둘 중 하나라도 1이면 1-> ex. arr1[i] = 9(10진수) = 1001(2진수) 컴퓨터 안에서는 항상 이진수로 저장 `Integer.toBinaryString(map)`으로 이진수 변환하면 앞의 0 자동으로 빠짐-> `String.format("%" + n + "s", binary)`로 공백 채우기(길이가 n이 될 때까지 왼쪽에 공백 채워서 문자열 맞추기) 1 -> '#' / 0 -> ' '로 벽 변환코드class Solution { public String[] solution(int n, int[] arr1, int[..
[프로그래머스/Lv.1] 크레인 인형뽑기 (Java)
·
✏️/Programmers
크레인 인형뽑기https://school.programmers.co.kr/learn/courses/30/lessons/64061풀이해당 열에서 위에서부터 인형 찾기`moves`: 크레인이 이동하는 열 번호`col = m - 1` => 0-based 인덱스로 변환 `board[row][col] != 0`: 인형 발견 `borad[row][col] = 0`: 인형 뽑기바구니 맨 위 인형같음 -> 2개 사라짐: `stack.poll()`, `cnt += 2`다름 -> `stack.push(doll)`예시board = [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] col: 1 2 3 4 5-------------------row0 | 0 ..
[PlantiFy/v3] MSA 환경에서 결제 시스템 리팩토링 - 리팩토링 개요 / 구조 재설계와 정합성 문제 해결
·
💻/프로젝트
리팩토링 개요 및 상황(문제의 시작) 내부 결제 수단(Pay)를 먼저 구현하면서 Pay가 결제 요청의 진입점이자 오케스트레이터라고 판단-> Pay가 결제 요청 수신, 흐름 조율 담당 (발생한 의문) 그런데 Pay가 금전 원장 관리하면서 결제 확정까지 직접 수행하는 건 책임 분리에 맞지 않다고 판단-> 결제 성공 판단을 별도의 Payment 서비스로 분리 1) Pay를 도메인 기준으로 다시 분리해보니 기존 구조에서 PG + Pay 역할이 명확히 분리되지 않았음 2) 도메인 별로 분산 락 적용했지만, 락 기준이 요청 단위가 아닌 서비스 단위로 분산 -> 동일 자원에 대한 동시성 제어 일관 X= Pay, Transaction, Payment 각각에서 서로 다른 락 사용 -> 동일 유저의 결제 요청이라도 서로..
[프로그래머스/Lv.1] 키패드 누르기 (Java)
·
✏️/Programmers
키패드 누르기풀이Pos 클래스좌표 + 거리 계산(맨해튼 거리)static class Pos { int x, y; Pos(int x, int y) { this.x = x; this.y = y; } int dist(Pos p) { return Math.abs(this.x - p.x) + Math.abs(this.y - p.y); }} 숫자 -> 키패드 좌표 변환`(n - 1) / 3`: 행`(n - 1) % 3`: 열(0,0) (0,1) (0,2) 1 2 3(1,0) (1,1) (1,2) 4 5 6(2,0) (2,1) (2,2) 7 8 9(3,0) (3,1) (3,2) * ..
aeongg
빙글빙글 돌아가는 Debug 하루