코딩테스트 5

백준2075_N번째 큰 수 (java)

https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제 풀이 방식 나의 생각 ArrayList에 입력받은 숫자를 모두 넣는다. reverseSort한다. n번째 큰수를 찾는 것이므로 내림차순 정렬된 list에서 n-1번째 숫자를 찾는다. 해당 방법은 시간이 좀 더 오래걸린다. 찾아본 풀이 우선순위큐를 최대힙으로 변경해서 큐에 입력된 숫자를 넣는다. 반복문을 통해 n-1번째까지 큐에서 poll해준다. 반복문이 끝나고 마지막에 한번 poll해주면 n번째 큰..

알고리즘 2021.11.09

백준1158_요세푸스 문제 (java)

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 풀이 방식 처음생각 처음에는 3번째 마다 제거한다고 해서 n까지의 for문에서 index를 증가시키면서 출력하려고 했으나, 단순히 인덱스만 증가시키면 n다음에 1로갈 수 있는 방법이 떠오르지 않음. 다음생각 문제에서 사람들이 원을 이루어 앉아있다고 하였기에 단순히 원형큐 자료구조를 사용하려고 했음. 그러나, 앞에서는 데이터를 뽑거나 삭제하는 일만 일어나고 뒤에서는 앞에서 뽑은 데이터를 넣기만 하면되기 때문에 일반적인 큐 자료구조를 써도 되겠다고 생각하였다. 수도코드 해당문제는 수도코..

알고리즘 2021.11.08

백준1764_듣보잡 (java)

생각한 문제풀이 방식 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M N과 M은 각각 최대 500,000이므로 N+M은 100만이다. 제한시간은 2초이므로 시간복잡도는 O(N^2)미만이 되야한다. 먼저, HashMap을 사용해서 듣도못한 사람의 이름을 key로 횟수를 value로 저장. 처음 이름이 나오는 것이기때문에 value를 1로 지정 그리고 보도못한 사람의 명단을 돌면서 map에 이미 이름이 있으면 +1 모든 입력을 받고 난 후 map에서 value가 2에 해당하는 key의 갯수와 이름을 출력해준다. 해당 자료구조를 사용한 이유 자료구조는 HashMap을 사용했다. 듣도못한 사람과 보도못한 사람의 명단이 순서대로 입력되는데 그 중에서 듣도보도 못한사람이란 뜻은 두 그룹에 모두 속해있다는 뜻이다..

알고리즘 2021.11.08

백준1620_나는야 포켓몬 마스터 이다솜 (java)

문제링크 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 처음에 문제보고 길어서 속으로 뭐지...했는데 정작 문제자체는 어렵지 않았다. 오히려 스토리가 있어 재미있었던 문제! 안녕? 내 이름은 이다솜. 나의 꿈은 포켓몬 마스터야. 일단 포켓몬 마스터가 되기 위해선 포켓몬을 한 마리 잡아야겠지? 근처 숲으로 가야겠어. (뚜벅 뚜벅) 얏! 꼬렛이다. 꼬렛? 귀여운데, 나의 첫 포켓몬으로 딱 어울린데? 내가 잡고 말겠어. 가라! 몬스터볼~ (펑!) 헐랭... 왜 안 잡히지?ㅜㅜ 몬스터 ..

알고리즘 2021.09.30

프로그래머스_제일 작은 수 제거하기 (java)

원본 문제 : https://programmers.co.kr/learn/courses/30/lessons/12935 정수가 저장된 배열 arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수 만들기 빈 배열이면 -1을 반환 제한조건 : arr은 길이 1이상인 배열, 인덱스 i,j에 대해 i 가j와 같지 않다면 arr[i]도 arr[j]와 같지 않다. class Solution { public int[] solution(int[] arr) { int[] answer = {}; List arr2 = new ArrayList(); // 배열에서 바로 삭제가 안됨으로 arraylist생성 // 원소가 1개이하면 무조건 가장 작은 수 이므로 제거된다 -> -1을 리턴 if(arr.length

알고리즘 2020.09.07