📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/276035문제요약SKILLCODES 테이블스킬 정보 (이름, 범주, 코드) 저장CODE는 2진수 비트마스크 표현 가능 (2의 제곱수)DEVELOPERS 테이블개발자 정보 (ID, 이름, 성, 이메일, 스킬코드) 저장SKILL_CODE는 여러 스킬을 비트 OR 연산으로 합쳐 놓은 값조건Front End 스킬을 가진 개발자를 찾기DEVELOPERS.SKILL_CODE와 SKILLCODES.CODE를 비트 AND 연산해서 0보다 크면 Front End 스킬 보유자임중복 제거 필요 (같은 개발자가 여러 Front End 스킬을 가지고 있을 수 있음)출력 컬럼ID, EMAIL, FIRST_N..

My Tech Blog (코딩테스트)
오늘의 명언
📑 1. 문제설명💡 2. 풀이과정HashMap + 배열 조합으로 해결하는 문제이다. 해시맵 써야 하는 이유는 선수의 현재 등수(인덱스)를 빠르게 조회해야 하기 때문이다. 타입의 HashMap을 선언해서 key, value 값으로 각각 선수명, 인덱스를 넣는다.그 후 callings 배열을 순회하며 해시맵에서 해당 이름에 대응하는 인덱스를 찾아 players 배열에서 선수 이름을 바꾼다.👨💻 3. 정답코드import java.util.*;class Solution { public String[] solution(String[] players, String[] callings) { HashMap playersList = new HashMap(); // 1..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/42889 입력:전체 스테이지의 개수 N게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.💡 2. 풀이과정실패율은 다음과 같이 정의한다.스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 각 사용자들은 현재 머물러 있는 stage 정보를 가지고 있다.stage = N인 사용자는 현재 N번 스테이지에 도전 중이며 아직 클리어하지 못한 상태를 의미한다. 문제에서 주어진 입출력 예1 데이터를 통해 ..

📑 1. 문제설명💡 2. 풀이과정이렇게 반환할 문자열의 길이가 고정되지 않은 경우는 배열을 못 쓰기 때문에StringBuilder을 써주는게 좋다. StringBuilder을 쓰면 마지막에 문자열을 반환할 때 toString() 으로 전환해야 한다.code를 인덱스에 따라 한 글자씩 돌면서 각 문자(char)이 1인지 아닌지 확인한다.1이면 mode 전환1이 아니면i) mode가 0일 때는 인덱스가 짝수면 해당 문자를 ret에 append함ii) mode가 1일 때는 인덱스가 홀수면 해당 문자를 ret에 append함ret.length()가 0이면 "EMPTY" 출력, 아니면 ret.toString() 출력👨💻 3. 정답코드class Solution { public String soluti..
📑 1. 문제설명💡 2. 풀이과정먼저 앞 3개의 항을 변수에 담는다.등차수열인지 등비수열인지 판별한다. b-a 랑 c-b가 같으면 등차수열이고 아니면 등비수열이다. 다음에 올 값 구하는 법 ▼등차수열이라면 common배열의 마지막 요소에 b-a 값을 더한다.등비수열이라면 common배열의 마지막 요소에 b/a 값을 곱한다.👨💻 3. 정답코드class Solution { public int solution(int[] common) { // 앞 3개의 항으로 등차수열인지 등비수열인지 판별 int a = common[0]; int b = common[1]; int c = common[2]; int index = common.lengt..
📑 1. 문제설명💡 2. 풀이과정A를 오른쪽으로 한 글자씩 "문자열 밀기" 연산을 최대 A.length() 번까지 수행해 본다.매번 B와 비교해서 같아지면 그때의 횟수를 리턴한다.끝까지 같아지지 않으면 -1을 리턴한다.👨💻 3. 정답코드class Solution { public int solution(String A, String B) { for(int i = 0; i 👏🏻 4. 좋아요 가장 많이 받은 코드class Solution { public int solution(String A, String B) { String tempB = B.repeat(3); return tempB.indexOf(A); }}String.repeat(3)는..
📑 1. 문제설명💡 2. 풀이과정이건 메서드만 알면 쉽게 푸는 문제이다. 매개변수로 받은 이진수 2개는 문자열이므로 문자열을 10진수 숫자로 변환후두 개를 더해서 다시 2진수 문자열로 반환하면 된다. 👨💻 3. 정답코드class Solution { public String solution(String bin1, String bin2) { // 이진수 문자열 → 10진수 숫자로 변환 int n1 = Integer.parseInt(bin1, 2); int n2 = Integer.parseInt(bin2, 2); // 두 수를 더하고, 다시 이진수를 문자열로 변환 return Integer.toBinaryString(n..
📑 1. 문제설명💡 2. 풀이과정처음에는 간단하게 주어진 매개변수 chicken/10 + (chicken/10)/10 을 리턴하면 된다고 생각했다.class Solution { public int solution(int chicken) { return chicken / 10 + (chicken/10) / 10; }}처음 chicken 수에서 받은 쿠폰으로 1차 서비스 치킨을 계산하고그 서비스 치킨에서 나온 쿠폰으로 딱 한 번만 추가 서비스 치킨을 더해주는 방식이다. 하지만 이렇게 하면 오답처리 된다.서비스 치킨에서도 또 쿠폰이 나오고, 그 쿠폰으로 또 서비스 치킨이 생기고, 그 치킨에서도 또 쿠폰이 생기고...이렇게 계속 반복이 된다. 즉 서비스 쿠폰이 또 10개가 넘어가면 또..