728x90
⬛ 프로그래머스 (카카오) | LV.2 거리두기 확인하기 - BFS 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 처음에는 P를 갖는 x,y 좌표들을 모두 pQ에 담아서 경우의 수에 따라 처리를 하려고 했다. 조건이라 함은 맨허튼 거리를 모든 P간에 구해두고, 현재 P위치에서 맨허튼 거리 2이하의 좌표 사이에서 파티션 존재유무를 확인하면 되지 않을까 했는데, 이렇게 시도하다가 실패헀다.. 풀이를 찾아보고 이..
⬛ 프로그래머스 (카카오) | LV.3 양과 늑대 - DFS 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 DFS로 깊이 탐색을 시도하되, 방문한 정점에 대한 처리 후 (늑대 ≥ 양 개수) 가 커지는 시점이 오면 return을 시키고 다른 정점에 대해 방문 처리하려고 생각했다. 근데 생각보다 조건을 처리하는 부분이 좀 까다롭게 느껴졌다. 1) DFS를 호출하며 매번 현재 깊이에 대한 양, 늑대 개수 처리를 ..
⬛ 프로그래머스 (카카오) | LV.1 개인정보 수집 유효기간 - 단순 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 n개의 개인정보 중 약관 type에 따라 현재 시점에서 파기할 개인정보 번호 목록을 리턴하는 문제이다. 문제가 요구하는 흐름대로 코드에 구현하면 된다. 🎈 [주의] split 메서드 사용시 실수하기 쉬운 것 (.) 구분자 → split(”\\ .”) 계속 오류가 나서 원인을 못찾다가 ..
⬛ 프로그래머스 | LV.3 있었는데요 없었습니다 (MySQL) https://school.programmers.co.kr/learn/courses/30/lessons/59043 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 이 문제의 경우 두 테이블 간 PK와 FK로 JOIN을 해서 입양일(OUT) B.DATETIME이 보호시작일(INS) A.DATETIME 보다 빠른 케이스를 추출해내야 한다. JOIN으로 대상 테이블 지칭 후, FK 활용하여 ON 조건을 작성하여 풀면 된다. 💚 제출 코드 -- 코드를 입력하세요 SELECT A.AN..
⬛ 프로그래머스 (카카오) | LV.3 미로 탈출 명령어 - 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 문제는 S (x,y) → E(r,c) 까지 k칸으로 갈 수 있는 경로 중 사전 순 가장 빠른 경로를 리턴하고 없으면 impossible을 리턴하라고 되어 있다. 가장 처음 풀이로 생각이 들었던 건 문자열의 사전 순인 [d, l, r, u] 방향으로 순으로 모든 경로를 완전 탐색 해야 하나 ? 였..
⬛ 프로그래머스 | LV.2 광물 캐기 - DFS 완전 탐색 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 문제를 보면서 캐낼 대상인 광물 순서는 고정인데 매번 다이아를 먼저 쓰는 게 최선이 아닐 수 있다고 생각했기 때문에 완전 탐색을 쓰는 게 맞다고 생각했다. 예를 들어 다이아 곡갱이를 초반에 다 써버렸는데 대상 광물 마지막 순서에 다이아가 몰릴 경우 최소 피로도 소모가 아닐 수 있다. 모든 케이스를 다..
⬛ 프로그래머스 | LV.2 무인도 여행 - DFS or BFS 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 이 문제의 경우 DFS로 풀든, BFS로 풀든 시작점에서 갈 수 있는 유효한 무인도를 모두 돌면서 누적한 값을 계속 List에 담아주면서 처리하고 그걸 오름차순 정렬하여 반환하면 되는 문제이다. 나는 BFS로 풀었다. 1) board[][]에 String으로 들어오는 지도 정보를 char 형으로 ..
24.03.09 (금) 나온 질문 공유 웹 서버와 WAS의 기본적인 차이점 웹서버는 정적 컨텐츠, WAS는 동적 컨텐츠를 생성하고 비즈니스 로직을 처리 MSA의 장단점을 설명해주세요 장점 독립된 서비스 개발 및 배포 장애 격리 서비스별 스택을 다양하게 가져갈 수 있음 단점 통합 테스트가 어렵다 통신 오버헤드 발생 WAS 만 사용하면 안되는지 - 분리하여 구성했을 때 이점이 명확해서 분리 구성한다. 서버 부하 방지 실제로 대규모 서비스→ 트래픽 분산을 위해 여러 WAS를 둬야함. 로드밸런싱 역할 보안 강화 : 웹서버 SSL/TLS 처리 가능, WS, WAS는 다른 포트 사용하므로 WAS에 방화벽쳐서 보안 더 강화할 여지도 있음 MVC 패턴이 무엇인지 간단하게 설명 개념 View : 사용자가 보는 부분 Mo..
⬛ 프로그래머스 (Dev-Matching 기출) | LV.3 다단계 칫솔 판매 - DFS 재귀 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 문제를 보면서 DFS로 각 i에 대한 부모로 거슬러 올라가며 금액만 누적처리해주면 되겠다고 생각헀다. 그런데, 이름이 많으니까 좀 헷갈려서 나의 경우에는 각 이름에 대한 인덱스로 접근하여 처리했다. enroll은 Map에 인덱스 담아서 Key로 idx바로 찾도록 해주고..
MySQL에서 두 날짜 간 차이가 필요할 때 활용하는 함수는 두 가지가 있다. 1) DATEDIFF 함수 : 단순히 두 날짜 (일수) 차이만 가져옴 2) TIMSTAMPDIFF 함수 : 연/분기/월/주/일/시/분/초 [단위] 지정하여 그 단위 차이 가져옴 DATEDIFF 함수 사용법 보통 (날짜1-날짜2) 를 반환한다. DATEDIFF(날짜1, 날짜2); TIMESTAMPDIFF 함수 사용법 → 단위에 다음을 지정해주면 두 날짜 사이의 ‘단위’ 기준 차이가 반환된다. SECOND : 초 MINUTE : 분 HOUR : 시 DAY : 일 WEEK : 주 MONTH : 월 QUARTER : 분기 YEAR : 연 TIMESTAMPDIFF(단위, 날짜1, 날짜2)
⬛ 프로그래머스 | LV.2 자동차 평균 대여 기간 구하기 (MySQL) https://school.programmers.co.kr/learn/courses/30/lessons/157342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 1) 날짜 차이 구하고 CAR_ID 기준으로 그룹핑 한 뒤, 추출한 값의 일수가 7일 이상인 경우만 추출한다. → 이때 DATEDIFF(날짜1, 날짜2) 를 활용할 건데, 날짜 차이 + 1을 해줘야 정상 답이 나온다. 🎈 DATEDIFF(ENDDATE, STARTDATE)+1 에서 +1값을 하는 이유 : ..
⬛ 프로그래머스(카카오) | LV.2 두 큐 합 같게 만들기 - 큐 (Queue) 활용 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚 문제 접근 방식 문제를 보고 매번 큰 합의 큐에서 poll하고 작은 합의 큐에 add 해야 되겠다는 생각이 가장 먼저 들었다. Queue 2개 선언해서 각각의 큐에 원소값을 세팅한다. 동시에 두 큐의 총합을 total 에 구하고, 한쪽의 sum만 구해둔다. 만약 total 이 홀수값이라면..
⬛ 프로그래머스 (카카오) | LV. 2 k진수에서 소수 개수 구하기 - 단순 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚 문제 접근 방식 문제 접근이나 구현 자체는 단수하고 비교적 쉬운 편이었다. 기출 문제가 생각보다 쉬워보이면 엣지 케이스를 모두 고려하는 습관을 들여야한다......... 이 문제의 경우, n이 100만인데 일단 데이터 크기가 10만 넘어가면 주의를 해야 된다 더 효율적인 알고리즘을 쓰던지, 자..
CASE WHEN THEN 구문 추출할 SEX_UPON_INTAKE 의 상태에 따라 우리가 원하는 값을 지정해서 출려해주고 싶을 때 사용하면 된다. SELECT ANIMAL_ID, NAME, (CASE WHEN SEX_UPON_INTAKE = 'Neutered Male' THEN 'O' WHEN SEX_UPON_INTAKE = 'Spayed Female' THEN 'O' ELSE 'X' END) FROM ANIMAL_INS; AS 별칭 지정 그리고 보통 CASE구분으로 추출해내는 컬럼명도 별칭 지정해야 하는 경우가 많다. CASE 문으로 해당 열 추출 조건을 처리해서 끝내주는 END 뒤에 AS로 지정할 별칭을 지칭해주면 된다. SELECT ANIMAL_ID, NAME, (CASE WHEN SEX_UPON..
⬛ 프로그래머스 | LV.2 조건에 부합하는 중고거래 상태 조회하기 (MySQL) https://school.programmers.co.kr/learn/courses/30/lessons/164672 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 FROM절로 테이블 선택하고 WHERE 에서 2022년 10월 5일에 해당하는 날짜 행에 대해 추출한 뒤, 출력 컬럼들을 ‘게시글 ID’ 기준 내림차순 정렬하는 문제였다. 💚배운 것 1) 컬럼 출력을 조건에 따라 CASE-WHEN THEN 구문으로 다르게 출력할 수 있다. CASE WHEN (컬럼..
⬛ 프로그래머스 (카카오) | LV.3 파괴되지 않은 건물 - 누적합 ( 😰 ) 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 1차 시도 | 정확성은 통과, 효율성 실패 원인 : skill 행 길이가 25만까지 들어올 수 있고, board[][] 이중 순회 시 10^6 이다. 최초 시도 때 skill에 대해 1번 순회하는 로직 안에서 호출한 함수가 내부적으로 2중 for문을 돌고 있기 때문에 3중 for문을..
⬛ 프로그래머스 (카카오) | LV.2 주차 요금 계산 (RE) - 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚 문제 접근 방식 주의할 점은 입차는 있고, 출차는 없을 때 23:59 출차로 대체해야 하는 부분이다. 1) records[] 로 들어오는 배열 순회하며 time은 getTime으로 분 시간 교환 carNum 은 식별자로서 HashMap의 key에 세팅 inOut은 입차/출차 정보 구분용으로 (입차는 음수..
⬛ 프로그래머스 | LV.1 둘만의 암호 - 문자열 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 규칙 대로 구현하면 되는 문제였다. s의 각 알파벳 idx 만큼 뒤의 알파벳으로 바꿀 것 idx만큼 뒤의 알파벳이 z를 넘길 경우 (순환구조처럼) a로 돌아가서 철 skip에 있는 알파벳은 건너뛸 것 [문제 풀이] String alpha 에 a~z까지 문자 중 skip 에 포함되는 문자는 건너뛰고 담아준..
24.03.01 (금) 나온 질문 공유 OAuth 2.0에 대해 설명하고 장점에 대해 설명하시오. - 카카오/네이버 등의 써드파티 (제3자) 서비스에 사용자 인증, 인가 서비스를 위임하는 방식을 통칭하며, 그러한 인증과 권한을 관리하는 프로토콜 - 장점 : 보안 (제3자 애플리케이션에서 필요한 최소한의 권한만 scope으로 부여 가능) 사용자 경험 향상, 유연성 향상 OAuth 2.0에서 발생할 수 있는 보안 취약성 중 하나 설명하시오. OAuth 인증과정에서 redirect url 을 중간에서 조작할 수 있다. 허가받지 않은 엑세스 토큰을 탈취할 수 있다. 방지 : 클라이언트를 등록할 때 리다이렉트 url 을 검증한다. OAuth 인증 과정에 대해 설명하시오. 1) User가 Client 에 사용 요청..