Algorithm & Data Structure

    [Java] 프로그래머스 Lv.2 > 멀쩡한 사각형

    [Java] 프로그래머스 Lv.2 > 멀쩡한 사각형

    https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 풀이 대각선으로 잘리는 사각형 패턴은, 최대 공약수로 나눈 작은 사각형만큼 반복한다. 예를 들어 가로 8, 세로 12인 직사각형이면 가로세로를 각각 4(8과 12의 최대공약수)로 나눈 가로 2, 세로 3인 직사각형이 반복됨을 알 수 있다. 그 중 가운데에서 대각선으로 잘리는 사각형은 최대공약수인 4번 반복된다. 즉, 가로 2 세로 3인..

    [Java] 프로그래머스 Lv.2 > 가장 큰 수

    https://programmers.co.kr/learn/courses/30/lessons/42746?language=java 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 풀이 앞 뒤 문자를 직접 붙여보고 비교해서 푼다. 예를들어 30과 34면 3034와 3430을 비교해서 3430이 더 크므로 34, 30 순으로 내림차순 정렬을 해준다. 처음에는 삽입정렬 하듯이 for문을 2번돌려서 compareTo() 함수를 이용해 문자열을 비교했는데 런..

    [Java] 프로그래머스 Lv.2 > 큰 수 만들기

    https://programmers.co.kr/learn/courses/30/lessons/42883# 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 풀이 탐욕법(Greedy) 문제다. 어떤숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하기 위해서, 어떤숫자의 길이 -k번 만큼 for문을 돌려 가장 큰 숫자를 남겨 답으로 return해주었다. 정렬시간을 줄이는 방법! 숫자를 비교하던 도중 9가 나오면 더이상 비교할 필요가 없으니 break 해준다. k-1개까지의 숫자를 제거한 상태에서 1개의 숫자만 남았을때, 더이상 비교할 필요가 없으니 break 해준다 예를 들어 숫자 1924에서 수 두 개를 제거 한다고 하자. 그럼 첫번째로 192에서 가장 큰 수 9를 뽑는다...

    [Java] 프로그래머스 Lv.2 > 기능개발

    https://programmers.co.kr/learn/courses/30/lessons/42586?language=java 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 입력 progresses : 먼저 배포되어야하는 순서대로 작업의 진도가 적힌 정수 배열 speeds : 각 작업의 개발 속도 정수 배열 출력 각 배포마다 몇 개의 기능이 배포되는지 풀이 각 기능의 진도율과 개발속도를 저장하는 Function 클래스를 만든다. 진도율이 100% 이상이 되는 기능수(cnt)를 세서 배포 시켜준다. (..

    [Java] 프로그래머스 Lv.2 > 다리를 지나는 트럭

    https://programmers.co.kr/learn/courses/30/lessons/42583?language=java 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 풀이 스택/큐 문제였다. 트럭이 다리를 건너는 순서대로 빠져나와야하기 때문에 큐를 사용했다. 다리를 의미하는 queue를 만들어주고, 조건에 맞게 트럭을 큐에서 넣고 빼준다. 다리 위 트럭이 없는 경우(맨 처음)에는 트럭을 queue에 넣어준다. 다리 위에 트럭이 다 찬 경우(q.size()== bridge_l..

    [Java] 프로그래머스 : 숫자 문자열과 영단어

    https://programmers.co.kr/learn/courses/30/lessons/81301?language=java 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 풀이 charAt() 함수는 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환한다. s의 길이만큼 for문을 돌려서 s.charAt(i)가 숫자면 그대로 반환하고, 영어면 저장해뒀다가 숫자 영단어와 동일한게 있다면 숫자로 바꿔준다. class Solution { public int solution(String s) {..

    [Java] 프로그래머스 : 로또의 최고 순위와 최저 순위

    https://programmers.co.kr/learn/courses/30/lessons/77484?language=java 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 풀이는 간단하다. 당첨 가능한 최고 순위는 0이 모두 당첨 번호라는 가정을 하고 순위를 구하고, 당첨 가능한 최저 순위는 0이 모두 당첨 번호가 아니라는 가정을 하고 순위를 구한다. lottos에서 당첨된 번호의 개수를 구해 cntNum에 저장하고, 0인 번호의 개수를 cnt0 변수에 ..

    [Java] 프로그래머스 : 실패율

    https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 풀이 변수 설명 N : 전체 스테이지의 개수 N stages : 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 answer : 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열 noclear : 해당 스테이지를 클리어하지 못한 사용자 수를 담는 배열 player : 스테이지에 도달한 플레이어 수/ 초기 사용자 수는 st..