코딩 테스트/프로그래머스

    프로그래머스 - 오랜 기간 보호한 동물(1) (SQL)

    https://programmers.co.kr/learn/courses/30/lessons/59044 코딩테스트 연습 - 오랜 기간 보호한 동물(1) ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr NOT EXISTS, NOT IN, LEFT JOIN을 사용하여 풀어 보았습니다. 각각의 성능 차이는 데이터량, db 종류 등에 따라 달라질 수 있을 거 같습니다. 예로 서브쿼리 최적화가 좋지 못한 DB라면 LEFT JOIN을 사용해야하겠죠...

    프로그래머스 - 숫자의 표현 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr n이 10000 이하이기 때문에 전체 계산을 해도 충분하다. 1부터 더해가면서 n과 비교해나아가면서 적절이 break문을 사용하면된다. // 프로그래머스 숫자의 표현 문제 class Solution { public int solution(int n) { int answer = 0; for (int i = 1; i

    프로그래머스 - 2개 이하로 다른 비트 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 생각보다 신경 써야하는게 많은 문제 기본적으로 짝수 홀수부터 나눠야한다. 짝수면 + 1만 진행 하면된다. 이유는 짝수의 2진수는 모두 0으로 끝나기 때문에 끝을 1로 바꾸는 것 만으로 해결이 가능하기 때문 ex) 10 -> 11 100 -> 101 홀수는 상대적으로 복잡해진다. 0을 미포함하는 경우 즉 1로만 이루어진 경우 앞에서 2번째 자리에 0을 삽입하여 해결 ex) 111 -> 1011 0을 포함하는 경우 마지막 0을 1로 바꾸고 그 뒤에 1을 0으로 바꾸어서 해결 ex) 10011 -> 10101 // 프로그래머스 2개 이..

    프로그래머스 - 삼각 달팽이 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 삼각형을 일단 왼쪽으로 밀어서 직각 삼각형을 만들어주면 풀기 쉬워진다. 아래 이미지처럼 1. 왼쪽 위에서 아래로 2. 왼쪽 아래에서 오른쪽 아래로 3. 오른쪽 아래에서 대각선 위로 앞선 3개의 반복으로 값을 채워가면 된다. // 프로그래머스 삼각 달팽이 문제 class Solution { public int[] solution(int n) { int max = n * ..

    프로그래머스 - 예상 대진표 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/12985?language=java 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 번호가 큰 선수와 작은 선수를 구별하고 라운드를 진행하면서 두선수가 만나는 경우 - 두 선수의 번호가 1차이 이면서 작은 수가 홀수 인 경우 (1,2는 가능하지만 2, 3 이면 안되기 때문) 만나기 전까지 두 선수 모두 이기는 경우의 번호를 배정 번호가 짝수이면 2로 나눈 값 홀수이면 2로 나눈 값 + 1 ex)..

    프로그래머스 - 방금그곡 문제 (자바)

    programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 1. #이 붙은 경우를 사용하지 않는 다른 문자로 치환 2. 재생 시간을 구하고 재생 시간 만큼의 재생된 음악 문자열을 만듬 3. 포함되면서 재생 시간이 긴 경우 answer 초기화 ps 만족하는 경우가 없으면 (None)을 리턴해줘야함. // 프로그래머스 방금그곡 문제 class Solution { public String solution(String m, St..

    프로그래머스 - 비밀지도 문제 (자바)

    programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 두 수를 비트 연산자 | 를 통해서 합치고 2진법으로 변경하면서 n보다 짧으면 0을 앞에 추가해준 뒤 replace를 통해서 1은 #으로 0은 공백으로 변경해주어서 해결하였습니다. // 프로그래머스 비밀지도 문제 class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answ..

    프로그래머스 - 동굴 탐험 문제 (자바)

    graph을 기준으로 bfs를 진행하면 되는데 문제를 풀때 중요한 개념으로 세이브를 생각해내야한다. 게임을 하다가 중간에 끄기전에 세이브 하듯 큐를 통해서 노드를 진행하고 진행하다가 해당 노드보다 먼저 진행되어야 하는 노드가 있는 경우이면서 먼저 진행되어야하는 노드가 아직 진행 되지않은 경우 세이브 한 뒤 큐를 진행한다. - save[이전에 진행되어야 하는 노드] = 현재 노드 // 먼저 방문해야하는 곳을 방문 하지 않은 경우 // 해당 저장한 뒤 먼저 방문해야하는 곳을 방문했을 때 다시 처리할 수 이도록 함 if (!visited[before[now]]) { save[before[now]] = now; continue; } 그리고 만약 현재 진행하고 있는 노드가 다른 노드의 먼저 진행되어야하는 노드인 ..