반응형

전체 글 113

[백준][20055번]컨베이어 벨트 위의 로봇[JAVA]

문제 설명 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 Ai이다. 위의 그림에서 1번 칸이 있는 위치를 "올라가는 위치", N번 칸이 있는 위치를 "내려가는 위치"라고 한다. 컨베이어 벨트에 박스 모양 로봇을 하나씩 올리려고 한다. 로봇은 올라가는 위치에만 땅에서 올라가고, 내려가는 위치에서만 땅으로 내려갈 수 있다. 내려가는 위치에 로봇이 있는 경우 로봇은 반드시 ..

[백준][15655번]N과 M(6)[JAVA]

문제 설명 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 풀이 방법 N과M(5)번 문제와, N과M(4)번 문제의 결합 문제이다. 주어진 N을 이용해서 순열을 만들지만, N배열이 정렬되어 있다는 가정으로 매개변수의 idx를 1씩 증가하면 된다. 알아야되는 개념 백트래킹 Stringbuilder import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main {..

[백준][15654번]N과 M(5)[JAVA]

문제 설명 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 풀이 방법 주어진 N개의 배열을 갖고 순열을 만들면 되는 문제였다. N과M(1)번 문제와 유사했고, N의 원소에 대해 값을 꺼내고, 중복 체크를 해주면 되는 문제이다. 알아야되는 개념 백트래킹 Stringbuilder import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int N, M; static int ..

[백준][15652번]N과 M(4)[JAVA]

문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 풀이 방법 중복 허용 -> N과M(3)번과 유사하다. 비내림차순 -> N과M(2)번과 유사하다. 즉, 매개변수에 idx를 추가하지만, 오름차순이 아니기 때문에 +1을 넣어주지 않으면 된다. idx에 값으로 반복문을 돌기 때문에 arr[0]은 항상 arr[1] 보다 작거나 같게 된다. 알아야되는 개념 백트래킹 Stringbuilder import java.util.Sca..

[백준][15651번]N과 M(3)[JAVA]

문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 풀이 방법 N과 M(1)에는 중복을 허용하지 않나 visit 배열을 사용했었다. 하지만 N과M(3)에서는 중복을 허용해준다 !! 그럼으로 중복을 체크했던 visit 부분을 지워주면 된다. 단, JAVA를 사용할 경우 System.out.print를 쓰면 시간 초과가 발생한다. 이러한 문제를 방지하기 위해서 StringBuilder를 사용하면 된다. (System.out.print는 매우 느린 속도를 갖고 있다) 알아야되는 개념 백트래킹 Stringbuilder import java.util.Scanner; ..

[백준][15650번]N과 M(2)[JAVA]

문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 풀이 방법 N과 M 1번과 다르게 오름차순 조건이 추가되었다. 그렇다면 매개변수 idx를 추가하여, 다음 출력할 문자를 이전 출력할 문자 + 1을 해준다. 알아야되는 개념 백트래킹 import java.util.Scanner; public class Main { private static int N,M; private static boolean visit[]; private static int arr[]; public static void func(int depth, int N, int M, in..

[백준][15649번]N과 M(1)[JAVA]

문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 풀이 방법 전형적인 백트래킹 문제였다. 백트레킹의 기초이기 때문에 따로 풀이가 없고, 잘 모르는 사람은 유튜브에 강의를 벡트래킹 찾아보기 바란다. 알아야되는 개념 백트래킹 import java.util.Scanner; public class Main { private static int N,M; private static boolean visit[]; private static int arr[]; static void func(int depth, int N, int M){ if (depth == M){ for(int i=0;i

[프로그래머스]H-Index[JAVA, 자바]

문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 풀이 방법 간단한 정렬문제이다. 정렬을 하게 된다면, 이하의 값을 고려하지 않아도 된다. 알아야되는 개념 정렬 import java.util.*; class Solu..

2019 한이음 ICT 멘토링 후기

개요 길었던 7개월간의 프로젝트가 종료되었다. (2019-04-22 ~ 2019-11-30) 시간이 많이 지났지만, 한이음 프로젝트에 대한 간략한 후기와 정보들을 공유하기 위해 글을 작성한다. 한이음 프로젝트에 도전하다 한이음 프로젝트란? (https://www.hanium.or.kr/portal/hanium/businessOverview.do) 간략하게 설명하자면 실무에 일하고 있는 멘토와 학생인 멘티가 팀을 이뤄 프로젝트를 진행하는 것이다. C, JAVA 기본밖에 모르는 내가 한이음 프로젝트를 시작하고자 하는 이유는 간단했다. 프로젝트 경험이 필요했기 때문이다. 3학년도 되었으니 어플이나 프로그램을 만들기 위해, 몇 개의 개발 동아리에 지원했지만 프로젝트 경험이 없다는 이유(개인적인 생각)로 계속 떨..

프로젝트 2021.04.08

[프로그래머스]레벨2- 소수 찾기 [JAVA, 자바]

문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 풀이 방법 백트래킹으로 numbers로 구할 수 있는 모든 숫자를 구한다.(조합) 구한 숫자들을 소수인지 판별한다. 백트래킹 개념이 잡혀있지 않다면, https://youtu.be/Enz2csssTCs 바킹독님의 백트래킹 강의를 들어보는 것이 좋다. 백준 사이트의 n과 m을 풀어보면서 백트래킹을 익혀보자 ! 알아야되는 개념 백트래킹 소수 판별 알고리즘 import java.util.*; class So..

반응형