전체 글 211

[프로그래머스] 프렌즈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 ..

[프로그래머스] 이진 변환 반복하기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr #풀이 문자열의 초기 length 를 구한 후 0을 제거한 length 와 비교하여 zero count를 구하여 더해준다. 0을 지운 후의 문자열 length의 길이로 Integer.toBinaryString() 함수를 호출하여 이진수 String을 다시 변수에 할당한다. 이후 변환 횟수를 증가시킨다. #소스코드 import java.util.*; class Solution { public int[] solution(String s) { int zeroCnt = 0, transCnt = 0, bfLen = 0, afLen = ..

[BOJ 15900] 나무 탈출 (Java)

#문제 https://www.acmicpc.net/problem/15900 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net #풀이 Leaf Node의 모든 Depth를 더했을 때 짝수인지 홀수인지에 따라 승패가 결정된다. Node정보를 인접 리스트로 저장한다. (방향성이 없으므로 양쪽에 모두 저장) 현재 Node의 Parent Node는 인접 리스트에서 제거한 후 dfs 탐색을 한다. 인접 노드가 없는 경우 해당 노드는 Leaf Node이므로 현재까지 구한 depth를 count에 더한다. count의 짝/홀 ..