알고리즘 58

자바 - 백준 14889 / 스타트와 링크

https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 실버 2 구현 방법 처음에 보고 재귀로 풀어야 겠다는 생각이 들어서 바로 풀었지만 시간 초과가 났다. 생각해보니 문제는 조합을 의도한거였는데 순열로 풀어서 시간 초과가 난거였다. 구현 자체는 간단하다. 1. n명의 사람들 중 반을 조합으로 선택한다. 2. 조합으로 선택된 사람들의 능력치를 구한다 3. 차이값을 계산하여 최소값인 경우 저장한다. 코드 import java.io.BufferedReader; import j..

알고리즘 2023.07.17

자바 - 백준 17144 / 미세먼지 안녕!

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 골드 4 구현 방법 구현 문제라서 문제부터 간단하게 요약했다. plate -> r * c 공기청정기 = 1번열(c) 설치, 두행(r) 차지한다 미세먼지 양 = A(r, c) a. 미세먼지 모든칸 동시에 확산, 네방향으로 인접한 방향에 공기청정기 있거나 칸없으면 확산 x 확산 양 : a(r,c) / 5 소수점 버리기 (r,c)에 남은 양 : a(r, c) - a(r,c)/5 * (확산 방향 개수)..

알고리즘 2023.07.04

자바 - 백준 16235 / 나무 재테크

https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 골드3 구현 방법 구현 문제라서 일단 문제의 조건을 간단하게 정리 했다. 1. n * n = 땅 크기 2. 처음 모든 칸 양분 5 3. m = 나무 개수 4. 봄 -> 자신의 나이만큼 양분 먹음 -> 나이 +1 5. 한칸에 여러개 나무 가능 6. 나이 어린 나무부터 양분 먹음, 양분 부족하면 바로 죽음 7. 여름 -> 죽은 나무 양분으로 변함, 나무 나이 // 2 8. 가을 -> ..

알고리즘 2023.06.30

자바 - 프로그래머스 / 전화번호 목록

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr lv2 구현 방법 조건 - phone_book의 길이는 1 이상 1,000,000 이하입니다. - 각 전화번호의 길이는 1 이상 20 이하입니다. - 같은 전화번호가 중복해서 들어있지 않습니다. 효율성 테스트 실패 방법 1. phone_book을 문자열 길이 오름차순으로 정렬한다. 시간복잡도 - 평균 : O(nlog(n)) / 최악 : O(n^2) 2. phone_book 문자열 하나와 그 외 p..

알고리즘 2023.05.28

자바 - 프로그래머스 / [1차] 뉴스 클러스터링

https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr lv 2 구현 방법 1. string 입력값을 모두 소문자로 바꾼다. 2. string 입력값을 두개씩 끊어서 Map형식으로 받는다. String = 두개씩 끊은 입력값, Integer = 두개씩 끊은 입력값의 개수 2-1. 두개씩 끊은 값중에서 알파벳을 제외한 문자나 숫자가 있을 경우 공백으로 만든다. 2-2. 2-1에서 string 길이를 비교해서 2보다 작으면 Map에 넣지 않는다. (순수 ..

알고리즘 2023.05.26

자바 - 프로그래머스 / 연속 부분 수열 합의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 2 구현 방법 3 ≤ elements의 길이 ≤ 1,000 1 ≤ elements의 원소 ≤ 1,000 삼중 포문까지 가능하고, 자료형은 int 써도 된다. 원형 수열을 구현 하는 방법은 "% 배열의 길이"를 이용하면 된다. 1. 삼중 포문 사용 첫번째 포문 - 더할 원소 개수 두번째 포문 - 더할 원소의 시작 인덱스 세번째 포문 - 연속된 합을 구현하기 위해 하지만 현재 문제로는 런타임 ..

알고리즘 2023.05.20

자바 - 프로그래머스 / 짝지어 제거하기

https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 2 구현 방법 문자열의 길이 : 1,000,000이하의 자연수 조건을 통해 시간 복잡도를 고려하여 구현해야 한다. ArrayList로 구현 할 경우, remove() 함수가 O(n)의 시간 복잡도를 가지고, 두 짝을 찾는데에도 O(n)을 가지므로 총 O(n^2)의 시간복잡도를 가지게 된다. 이런 경우, 시간초과가 발생한다. 또한 LinkedList로 구현 할 경우, remove() 함수는 O..

알고리즘 2023.05.05

자바 - 프로그래머스 / 피보나치 수

https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 2 구현 방법 피보나치 보자마자 재귀(Top-down)로 후딱 구현했는데 런타임 에러가 났다. 문제 범위가 "n은 2 이상 100,000 이하인 자연수입니다." 여서, 재귀로 풀 경우 중복되는 계산이 많아져서 비효율적이다. 그래서 dp를 이용해서 반복(Bottm-up)으로 구현했다. 그런데도 오류가 떠서 찾아보니 자바 int 자료형의 경우, -2,147,483,648 ~ 2,147,483,6..

알고리즘 2023.05.03

자바 - 프로그래머스 / 개인정보 수집 유효기간

https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 1 구현 방법 1 ≤ terms의 길이 ≤ 20 1 ≤ privacies의 길이 ≤ 100 런타임 에러 걱정없이 구현 할 수 있다. 문제는 String 형식으로 된 날짜 형식을 어떤 식으로 바꿔서 날짜 비교를 할지 였다. 처음에는 일일히 년,월,일을 StringTokenizer를 이용해서 나누고, 이걸 int 형식으로 바꾸고, 필요한 만큼 더하기 한 후, today와 비교 하는 식으로 구현..

알고리즘 2023.05.03

자바 - 프로그래머스 / [1차]캐시

https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 2 구현 방법 0 ≦ cacheSize ≦ 30 cities는 도시 이름으로 이뤄진 문자열 배열로, 최대 도시 수는 100,000개이다. O(n^2)도 가능하다. 큐를 이용하면 조건에 만족하는 사이즈 내에서 LRU를 만족하며 구현 될거라고 생각했다. 그런데 오류가 떠서 생각해보니까 큐 안에 값이 존재하는 경우, 큐 내에서 위치를 업데이트 시켜 줘야 하는걸 깨닮았다. 그런데 또 오류 떠서 보니..

알고리즘 2023.05.02