💡Problem Solving 182

[BOJ 2609] 최대공약수와 최소공배수 (Java)

#문제 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net #풀이 유클리드 호제법을 사용한다. 2개의 자연수의 최대공약수(GCD)를 구하는 알고리즘 이다. 자연수 a와 b (a > b)에서 a를 b로 나눈 나머지를 r이라고 했을 때 GCD(a, b) = GCD(b, r) 이며, r이 0이 되는 순간 b가 최대 공약수가 된다. 최소 공배수는 두 수를 곱한 후 최대 공약수로 나눠주면 구할 수 있다. #소스코드 package math; import java.io.BufferedReader; import java.io.I..

[프로그래머스] N진수 게임 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr #풀이 N진수 변환 함수를 한참 구현하고 제출했는데 절반 정도가 틀렸다. 찾아보니 Java 자체에서 N진수 변환 기능이 있어서 해당 함수로 바꿨더니 잘된다. Integer.toString(int num, int N진법) 요렇게 넣으면 해당 진수가 리턴된다. 코딩 문제에서 진수 변환할 일이 많은데 알아두면 좋을 것 같다. #소스코드 clas..

[프로그래머스] 프렌즈4블록 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr #풀이 순서대로 배열을 체크해서 풀었다. 블록을 2차배열에 저장하고, 인덱스의 우측, 아래쪽, 대각선우측을 체크하여 삭제할 인덱스를 리스트에 담아둔다. 삭제할 리스트의 크기가 0이면 while문을 빠져나온다. 삭제할 블록이 있다면 한꺼번에 공백으로 바꿔준다. 이후 블록을 체크하면서 현재 블록의 밑 블록이 비어 있는지 체크하여, 블록..

[프로그래머스] 게임 맵 최단거리 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr #풀이 BFS 알고리즘으로 도착 지점 도달까지의 최단 거리를 구하여 리턴하였다. #소스코드 import java.util.*; class Solution { public int[][] dir = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; public int[][..

[프로그래머스] 뉴스 클러스터링 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr #풀이 1. 각 문자열을 두 문자씩 쪼개서 Map에 넣는다. 이때 value값은 해당 문자가 나온 횟수이다. - 정규식을 이용해 특수문자가 포함된 문자를 필터링한다. - 이 때 원소의 총 개수를 count한다. 2. 교집합의 개수를 구한다. - 둘 중 하나의 맵을 순회하면서 다른 맵의 동일한 key가 있는지 체크하여, 동일한 key가..

[프로그래머스] 소수 찾기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr #소스코드 import java.util.*; class Solution { public ArrayList primes = new ArrayList(); public int[] numbers; public boolean[] used; public int num, count; public boolean isPrime(int k){ if(k <..

[프로그래머스] JadenCase 문자열 만들기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12951# 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr #풀이 단어가 공백으로 구분되어 주어지는데 공백의 칸 수가 들쑥 날쑥 할 수 있다. split(" ")으로 쪼갰다가 틀린 케이스가 존재해서 정규식으로 뒤에 공백까지 포함해서 단어를 나눠서 처리하였다. 마지막 단어 뒤에는 공백이 없거나 또는 공백이 있을 수 있다. 공백이 있다면 while문에서 처..

[프로그래머스] 오픈채팅방 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr #풀이 id, name 쌍을 가지는 HashMap을 이용하였다. record를 순회하면서 id, name 쌍을 만들고 요청이 있을 경우 name을 업데이트 한다. name은 변경될 수 있으므로 name대신 id를 넣어서 문자열을 저장해둔다. 순회가 끝난 후 문자열 내 id를 name으로 변경한다. #소스코드 import java.util.*; class ..

[BOJ18870] 좌표 압축 (Java)

#문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net #풀이 정렬한 배열을 순회하면서 각 원소와 매핑되는 새로운 인덱스를 Map에 저장한 후 초기 배열을 순회하면서 해당 Map에 매핑된 Index를 출력해줬다. #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class..

[프로그래머스] 예상 대진표 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12985# 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr #풀이 번호 간격이 1이더라도 해당 라운드에서 대진하지 않을 가능성이 있다. 예를 들어 아래 4, 5번 선수는 3라운드에서야 만날 수 있다. 1) a와 b의 차이가 1을 초과할 경우 번호를 다시 매긴다. 2) 차이가 1이여도 a와 b를 각각 2로 나눈 몫이 같을 경우 번호를 다시 매긴다. 1 2 1 2 3 4 1 2 3 4 5 ..