Algorithm & Data Structure
[Java] 프로그래머스 : 정수 내림차순으로 배치하기
https://programmers.co.kr/learn/courses/30/lessons/12933?language=java 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이 programmers.co.kr 풀이 처음엔 toCharArray로 char 배열로 만들었는데, sort에 Comparator T에 기본자료형이 들어가지 못한다고한다. 그래서 .split("")으로 String 타입으로 배열을 선언했다. Long->String : String.valueof(n) 내림차순 정렬 : Arra..
[Java] 프로그래머스 : 신고 결과 받기
https://programmers.co.kr/learn/courses/30/lessons/92334?language=java 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 풀이 answer : id_list에 담긴 순서대로 각 유저가 받은 결과 메일 수 idMap : 유저별 순서 저장 (key : 유저이름, value : 순서) map : 유별 자신을 신고한 유저 (key : 유저이름, value : key를 신고한 유저이름 set) 1. hashmap을 초기화 해준다. idMap = {muzi=0..
[Java] 프로그래머스 : 다트 게임
https://programmers.co.kr/learn/courses/30/lessons/17682?language=java 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 풀이 다트 게임은 3번의 기회로 구성되니 각 기회마다 얻을 수 있는 점수를 저장할 배열 score을 만들었다. dartResult를 char배열로 만들어 for문으로 문자열을 하나씩 돌린다. 해당 문자열이 숫자일 때는 점수저장을 위해 string s 에 더해준다. 해당 문자열이 보너스(S, D, T)일 때는 s를 int로 바꾸어 score배열에 넣는다. 그 후 각 보너스에 맞게 점수 연산 후, 그 다음 문자열이 옵션(*,#)일 때, 옵션에 맞는 연산도 해준다. 다트 횟수를 증가시키고(cnt++), 점수를 초기..
[Java] 프로그래머스 : 비밀지도
https://programmers.co.kr/learn/courses/30/lessons/17681?language=java 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 문제 숫자로 암호화 되어있는 비밀지도 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽..
[Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)
https://programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 입력 participant : 마라톤에 참여한 선수들의 이름이 담긴 String 배열 completion : 완주한 선수들의 이름이 담긴 String 배열 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자..
[Java] 프로그래머스 : 키패드 누르기
https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 왼손과 오른손의 위치를 저장해놓고 눌러야할 숫자까지의 거리를 구해서 비교한다. 눌러야할 숫자까지의 거리를 구하는 공식을 계산해내는데 오래걸렸다. 위아래 거리 = (눌러야할 숫자(n) - 현재 손의 위치) / 3 좌우 거리 = (눌러야할 숫자(n) ..
[Java] 프로그래머스 : 크레인 인형뽑기 게임
https://programmers.co.kr/learn/courses/30/lessons/64061?language=java 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 풀이 변수 doll : 꺼낸 인형을 넣을 리스트나 스택 doll board[i][m-1] : 꺼낸인형 answer : 터트린 인형개수 알고리즘 moves 만큼 for문 돌림 board의 길이만큼 for문 돌림 꺼낸인형(board[i][m-1]) 이 0일 경우에는 continue 꺼낸인형이 0이 아닐 시 doll에 넣은 마지막 인형과 같다면 인형을 터트리고 answ..
[Java] 프로그래머스 : 체육복
https://programmers.co.kr/learn/courses/30/lessons/42862?language=java 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이 체육복을 잃어버린 학생(lost)은 -1, 체육복의 여벌을 갖고있는 학생(reserve)는 +1을 해준 배열 people을 선언한다. 배열크기를 n+2로 선언한것은 후에 조건식에서 i가 0보다 크고, 전체학생보다 작은지등의 비교문을 적지 않기 위해서이다! 체육복을 갖고있지 않은 학생 (people이 -1) 일 때, 자기보다 앞자리, ..