전체 글

전체 글

    [백준, BOJ 2022] 사다리 (java)

    https://www.acmicpc.net/problem/2022메모리: 14,576 KB , 시간: 112 ms사용 알고리즘: 이분 탐색, 수학, 피타고라스 정리수학 공식이 적용되는 것 같은데, 적절한 공식이 떠오르지 않아 블로그를 참고했다. 공식을 대입하여, 이분 탐색으로 두 건물 사이의 거리를 오차 범위 이내에 오도록 하는 값을 찾으면 된다.이분 탐색 시작 시에 값의 범위는 0 ~ Math.min(x, y)인데, 두 건물 사이의 거리가 사다리의 길이보다 길 수는 없기 때문이다.res가 c보다 높은 곳에 위치한다면, 가운데 값을 크게 해야 더 낮은 res를 구할 수 있기 때문에 이분 탐색의 왼쪽 값을 변경해 주고res가 c보다 낮은 곳에 위치한다면, 가운데 값을 낮게 해야 더 높은 res를 구할 수 ..

    [프로그래머스, 214289] 에어컨 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/214289# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 130 MB, 시간: 139.39 ms사용 알고리즘: 다이나믹 프로그래밍 n - 1분에서 에어컨을 끄거나, 희망 온도를 올리거나 내리거나, 희망 온도를 유지했을 때 나올 수 있는 모든 경우를 구하여 n분에서 발생할 수 있는 모든 경우를 구하는 방식으로 풀었다.import java.util.*;class Solution { static int temp; static int ..

    [프로그래머스, 214288] 상담원 인원 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/214288?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 75.6 MB, 시간: 3.49 ms사용 알고리즘: 그리디 알고리즘 모든 상담에 대해 멘토를 1명부터 (n - k + 1)명까지 배치했을 때의 대기 시간을 구한다.그 다음 어떤 상담의 멘토를 1명 늘려줄 때, 대기 시간을 가장 줄일 수 있을지 구해서 그 상담의 멘토를 1명 늘려주는 작업을 (n - k)번 진행한다.import java.util.*;class Solut..

    [백준, BOJ 1581] 락스타 락동호 (java)

    https://www.acmicpc.net/problem/1581메모리: 14,200 KB , 시간: 124 ms사용 알고리즘: 많은 조건 분기FF가 있다면 무조건 모든 FF를 먼저 넣어주는 것이 좋다.이후 FS가 있다면 FS를 하나 넣어 느리게 시작하는 음악을 넣어주러 가고, 또 모든 SS를 넣어준다.이후 SF와 FS를 번갈아가면서 넣어주면 최대한 많은 곡을 넣어줄 수 있다. 이를 if문을 통해 조건 분기만 잘 구현해주면 된다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args..

    [프로그래머스, 133026] 성분으로 구분한 아이스크림 총 주문량 (mysql)

    https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT ingredient_type, SUM(total_order) AS TOTAL_ORDERFROM first_half as fhLEFT JOIN icecream_info as ii ON fh.flavor = ii.flavorGROUP BY ingredient_typeORDER BY TOTAL_ORDER

    [백준, BOJ 17142] 연구소 3 (java)

    https://www.acmicpc.net/problem/17142메모리: 26,156 KB , 시간: 240 ms사용 알고리즘: 그래프 이론, 브루트포스 알고리즘, 그래프 탐색, 너비 우선 탐색, 백트래킹바이러스가 어디에 존재하는지 ArrayList에 담아 따로 관리해 준다.각 바이러스마다 해당 바이러스만 활성화했을 때, 모든 곳에 바이러스를 확산시키기 위해 얼마만큼 시간이 걸릴지 spread_time 배열에 정보를 저장해 둔다.바이러스들 중 M개의 바이러스를 백트래킹을 통해 골라준 후, 고른 M개의 바이러스들을 활성화시켰을 때 최대 시간을 구해준다.M개의 바이러스 조합 중 최대 시간이 가장 짧은 시간을 답으로 출력한다. 이 문제를 해결하면서 한 가지 헷갈렸던 조건은 활성 바이러스가 비활성 바이러스가 ..

    [프로그래머스, 59044] 오랜 기간 보호한 동물(1) (mysql)

    https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT name, datetimeFROM animal_insWHERE animal_id NOT IN ( SELECT animal_id FROM animal_outs)ORDER BY datetime LIMIT 3;

    [백준, BOJ 18116] 로봇 조립 (java)

    https://www.acmicpc.net/problem/18116메모리: 306,680 KB , 시간: 1,232 ms사용 알고리즘: 유니온 파인드같은 로봇의 부품인지 알기 위해 유니온 파인드를 사용하였다.만약 두 부품이 같은 로봇의 부품인지 알게 되었다면, 각자 알고 있던 부품의 개수를 더해준다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { static int[] parent; static int[] count; public static void main(String[] args) t..

    [백준, BOJ 1799] 비숍 (java)

    https://www.acmicpc.net/problem/1799메모리: 15,996 KB , 시간: 192 ms사용 알고리즘: 백트래킹일단 이 문제에서 내가 생각해 낸 아이디어는,체스판에서 왼쪽 위 -> 오른쪽 아래로 내려오는 라인들을 그었을 때, 각 라인 위에 위치한 비숍들은 다른 라인에 영향을 줄 수 없다.마찬가지로 오른쪽 위부터 왼쪽 아래로 내려오는 라인들을 그었을 때, 각 라인 위에 위치한 비숍들은 다른 라인에 영향을 줄 수 없다. 이 아이디어를 가지고 오른쪽 위 -> 왼쪽 아래로 내려오는 라인들을 해당 라인에서 비숍을 하나 고르고 다른 라인에서 비숍을 고르러 가는 방법으로 백트래킹 했다.(비숍을 하나 골랐을 때, 왼쪽 위 -> 오른쪽 아래 라인에 이미 비숍이 있으면 놓을 수 없다.)그런데 이 ..

    [백준, BOJ 6443] 애너그램 (java)

    https://www.acmicpc.net/problem/6443메모리: 34,256 KB , 시간: 496 ms사용 알고리즘: 백트래킹, 문자열입력받은 문자열에서 사용한 문자의 개수를 담는 visited 배열을 만들어,인덱스에 해당하는 문자가 몇 개 사용됐는지 체크해준다. combi 메소드에서 백트래킹을 통해 현재 사용할 수 있는 문자 중 사전 순으로 빠른 문자부터 스택에 담아주고,사용할 수 있는 문자 개수를 줄여주며 애너그램 조합을 구해주는 방식을 사용했다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Stack;public class Main { static char[] string; stat..