코딩 테스트 27

[백준] 1764번: 듣보잡 (실버4, 자료 구조, 문자열, 정렬해시를 사용한 집합과 맵, JAVA)

문제 링크 : https://www.acmicpc.net/problem/1764 [백준] 1764번: 듣보잡 (실버4, 자료 구조, 문자열, 정렬해시를 사용한 집합과 맵, JAVA) 해당 문제는 N과 M의 중복 개수와 이름을 출력하는 문제입니다. (중복 개수 출력을 못봐서 두 개의 케이스로 풀었습니다..) 1. getOrDefault를 사용한 풀이 getOrDefault는 지정된 값을 찾아서 없다면 기본값을, 있다면 값에 1을 더하여 사용했습니다. map.put(name, map.getOrDefault(name,0) + 1); 으로 사용을 했는데 name값이 있다면 value를 1 증가 시키고 없다면 기본값(0)을 반환시키도록 하는 함수입니다. 보도 못한(M) 사람을 입력받고 해당하는 키가 있다면 값을 ..

[백준] 1526번: 가장 큰 금민수 (브론즈1, 수학, 구현, 브루트포스 알고리즘, JAVA)

문제 링크 : https://www.acmicpc.net/problem/1526 1526번: 가장 큰 금민수 (브론즈1, 수학, 구현, 브루트포스 알고리즘, JAVA) 수를 하나 입력받고, 4와 7로만 이루어진 숫자의 최댓값을 구하는 문제입니다. 전체 코드는 아래와 같은데, 값을 입력받은 후 해당 숫자를 char 배열로 변환합니다. 이후 각각의 char 배열에 7또는 4가 있는지 확인하고 count를 증가시키게 되는데, count가 char 배열의 길이와 같을 경우 모든 값이 4또는 7로 이루어진 문자이기 때문에 출력 후 종료합니다. 만약, 같지 않다면 입력받은 값(N)에서 1씩 감소시키며 원하는 값을 찾을때까지 반복합니다. import java.io.BufferedReader; import java.i..

[백준] 1417번: 국회의원 선거 (실버5, 구현자료, 구조그리디, 알고리즘시뮬레이션, 우선순위 큐, JAVA)

문제 링크 : https://www.acmicpc.net/problem/1417 1417번: 국회의원 선거 (실버5, 구현자료, 구조그리디, 알고리즘시뮬레이션, 우선순위 큐, JAVA) 매수해야하는 사람의 수를 구하는 문제인데, 예제의 경우 다솜(5)이가 2번과 3번의 사람을 한명씩 매수하게 되면 득표 수가 7,6,6이 되므로 두명을 매수해야하기 때문에 출력값은 2가 나와야 합니다. 아래의 코드에서 각각의 값을 입력받고, 한명의 후보밖에 없을 경우(입력되는 값이 1일 때) 0을 출력합니다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(ne..

[백준] 1302번: 베스트셀러 (실버4, 자료구조, 문자열, 정렬, 해시를사용한 집합과 맵 JAVA)

문제 링크 : https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 (실버4, 자료구조, 문자열, 정렬, 해시를사용한 집합과 맵 JAVA) 해당 문제는 가장 많이 판매된 책을 출력하는 문제입니다. 우선 사용자로부터 입력을 받고 HashMap에 담습니다. key는 책 이름, value는 판매된 횟수로 사용할 예정입니다. maxValue와 maxKey는 마지막 로직에서 가장 많이 판매된 책을 구하기 위한 변수입니다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Syst..

[백준] 1100번: 하얀 칸 (브론즈2, JAVA)

문제 링크 : https://www.acmicpc.net/problem/1100 [백준] 1100번: 하얀 칸 (브론즈2, JAVA) 하얀 칸 위에 말(F)이 있는 칸이 몇개인지 찾는 문제인데, 예제 출력을 보면 아래와 같습니다. 해당 문제에서 첫번째(왼쪽 맨 위 / 0,0)는 하얀 칸으로 시작하고 그 다음부터 검은 칸이 한번씩 반복되는데, 해당 칸을 기준으로 옆 칸과 아래칸은 검은 칸이 됩니다. 화살표로 표시하게 되면 아래 처럼 되는데, 파란색이 하얀 칸이나 빨간 색이 검은 칸입니다. 아래 코드로 시작하여 체스판을 입력받고, for문을 통해 로직을 작성합니다. for문의 tempChar는 하얀칸 위에 있는 말을 확인하기 위해 입력받은 체스판을 char 배열로 만들어 줍니다. public class Ma..

[프로그래머스 Lv1] 신규 아이디 추천 (2021 KAKAO BLIND RECRUITMENT)

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72410 [프로그래머스 Lv1] 신규 아이디 추천 아래와 같은 단계들의 유효성 검사를 통과하며 문자열을 다루는 문제입니다. 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이..

[백준] 14916번: 거스름돈 (실버5, 그리디 알고리즘, JAVA)

문제 링크 : https://www.acmicpc.net/problem/14916 [백준] 14916번: 거스름돈 (실버5, 그리디 알고리즘, JAVA) count 변수를 선언하여 최종적으로 출력한 동전의 최소 개수를 구합니다. while true를 사용하여 무한루프를 실행시키고, 각각의 조건식은 다음과 같습니다. N%5 == 0 && N != 0 5로 나누어 떨어지고, N이 0이 아닐 경우에는 count를 증가시키고 N에서 5를 감소시킵니다. N/2 >= 1 N의 값에서 2를 나눳을 때 최소 1번 이상 나누어질 경우 count를 증가시키고 N에서 2를 감소시킵니다. N != 0 N의 값이 0이 아닐 경우 -1를 출력하고 반복문을 종료합니다. 그 외의 경우에는 N에 대한 모든 계산이 끝나고 나누어 떨어지..

[백준] 14659번: 한조서열정리하고옴ㅋㅋ (브론즈1, 그리디 알고리즘, 50%~53% 시간초과, JAVA)

문제 링크 : https://www.acmicpc.net/problem/14659 [백준] 14659번: 한조서열정리하고옴ㅋㅋ (브론즈1, 그리디 알고리즘, 50%~53% 시간초과, JAVA) 문제의 요약은 아래와 같습니다. "자신보다 낮은 봉우리에 서있는 적들만 처치할 수 있게 되었다" → 현재 위치의 값보다 오른쪽의 값이 낮다면 적을 처치함 "출발한 봉우리보다 높은 봉우리를 만나면 그대로 공격을 포기" → 오른쪽 값이 높다면 그 이후의 값은 보지 않음 "모든 용들은 오른쪽으로만 나아가며" → 오른쪽의 값만을 확인 "봉우리의 높이는 중복 없이 유일하다." → 같은 높이의 값을 존재하지 않음 처음에 시도할 때의 코드인데, 각각의 값들을 비교하고 오른쪽의 값이 더 낮다면 적을 처치(kill)하고, 더 높은..

[Algorithm] 완전 탐색, 브루트포스 알고리즘 (Brute Force)

[Algorithm] 완전 탐색, 브루트포스 알고리즘 (Brute Force) 완전 탐색, 브루트포스 알고리즘은 이름 그대로 모든 경우를 탐색하여 답을 도출하는 알고리즘입니다. 이러한 특징 때문에 정답을 당연히 찾아 맞출수는 있지만, 모든 경우를 탐색하는 만큼 정답이 도출될 때 까지의 시간은 장담할 수 없는 큰 단점이 있습니다. 즉, 시간 복잡도가 매우 큽니다. 즉, 만약 123456789라는 정답이 있을 경우 아래와 같이 동작하게 되는 알고리즘 입니다. 숫자 1 탐색 숫자 2 탐색 숫자 3 탐색 .... 숫자 123456787 탐색 숫자 123456788 탐색 숫자 123456789 탐색 후 정답 도출 이러한 특징으로 인해 브루트포스 알고리즘의 경우 대부분 무한 루프, 중첩되는 for문과 if문을 조합..