반응형

알고리즘 53

[프로그래머스]체육복[JAVA, 자바]

문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복..

[프로그래머스]2016년[JAVA, 자바]

문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 풀이 방법 달(a),날짜(b)를 일수로 계산해준 뒤 요일을 계산해주면 된다. 알아야되는 개념 배열 class Solution { public String solution(int a, int b) { String answer = ""; int[] month = {0, 31, 29, 31, 30, 31, 30, 31, 31..

[프로그래머스]신규 아이디 추천[JAVA, 자바]

문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다...

[프로그래머스]크레인 인형뽑기 게임[JAVA, 자바]

문제 설명 생략 풀이 방법 스택을 이용한 문제이다. 먼저 board 배열을 탐색하여, 인형을 뽑는다. 뽑는 이용을 스택에 push하는데, 비어있을 경우 그냥 push, 아닐 경우 top이랑 비교해서 같으면 pop, 다르면 push 해준다. 정답에 x2를 한 이유는, pop한 개수가 아닌 없어진 인형의 개수이기 때문이다. 알아야되는 개념 스택 반복문 import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack st = new Stack(); for (int i=0;i 0){ if(!st.empty()) { if(st.peek() == board[j][now]) { st.po..

[프로그래머스]모의고사[JAVA, 자바]

문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..

[프로그래머스]k번째수[JAVA, 자바]

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 풀이 방법 copyOfRange 메소드를 사용하면 간단하고 ..

[프로그래머스]완주하지 못한 선수[JAVA, 자바]

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 풀이 방법 hashmap을 사용해서 풀면 되는 문제였다. 정렬 없이 일반적으로 배열이나 arraylist를 사용하면 시간 초과가 발생한다. 그래서 탐색속도가 빠른 hashmap을 사용해서 문제를 해결했다. JAVA에 익숙하지 않아서, getOrDefault, keySet과 같은 내부 메소드에 익숙하지 않아서 고생을 조금 했다. 알아야되는 개념 hashmap has..

[프로그래머스]두 개 뽑아서 더하기[JAVA, 자바]

문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 풀이 방법 문제를 잘 읽어보면 중복 없는 오름차순의 배열을 return 하라는 문제이다. 2중 반복문을 통해 모든 수의 합을 더 해줌 -> 중복 없이 Arraylist에 add 해줌 -> 배열 생성 후 Arraylist 원소들을 넣어줌 -> 오름차순 정렬 초기 배열의 크기를 설정해주는 것이 어려움으로 Arraylist를 사용했다. 알아야되는 개념 Arraylist 정렬(Sort) 2중 반복문 import java.util.ArrayList; import java.util.Array..

[백준][16197번] 두 동전 [cpp, c++]

백준 16197 두 동전 완전탐색으로 푸는 문제였고, 나는 자신있는 BFS로 풀었다. www.acmicpc.net/problem/16197 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, www.acmicpc.net 풀이 방법 1) 원래 BFS 방법으로 푸는 건 똑같지만, 벽을 만나면 원래 좌표를 가져오는 것이 중요한 문제였다. 2) 원래 좌표를 사용하기 위해 cur 라는 구조체 변수를 한 개 두고, 현재 좌표를 가져왔다. #include #include #include using namespace std; int dx[5] = {1,0..

[백준][2447번] 별 찍기 - 10 [cpp, c++]

백준 2447 장군 재귀(recursion)와 분할 정복(divide and conquer)을 이용해야 되는 문제이다. 오랜만에 문제를 풀다보니 상당히 애를 먹었던 문제였다 ㅠㅠ www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 풀이 방법 1) 3*3 가운데가 뚫린 사각형이 존재하는 사각형이 반복되는 형태이다. 2) 이 문제를 해결하기 위해, 따로 2차원 배열을 생성하여 *문자를 저장하는 방법과 바로 출력하는 방법이 존재한다고 생각했..

반응형