목록알고리즘 (192)
곽로그
import java.io.BufferedWriter; import java.util.Scanner; public class Main { public static StringBuffer sb =new StringBuffer(); public static int count =0; public static void hanoi(int n, int from, int via, int to) { if(n==1) { count++; sb.append(from+" "+to+"\n"); } else if(n
import java.util.Arrays; import java.util.Scanner; public class Main { public static char[][] square; public static void draw(int n, int row, int column) { if(n
import java.util.Scanner; public class Main { public static int factorial(int n) { if(n
문제 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이룰 수 있다. 모든 왼쪽 대괄호("[")는 오른쪽 대 www.acmicpc.net 접근 여는 괄호 ( [ 가 나오면 push를 한다. 닫힌 괄호 ) ]가 나오면 pop을 한다. - 이때 pop을 하기전에 스택이 비어있으면 유효하지 않다. - pop을 한 괄호의 짝이 안맞으면..
문제 2869번: 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽 www.acmicpc.net 문제 풀이 처음에는 "근데 또, 정상에 올라간 후에는 미끄러지지 않는다."라는 조건을 고려하지 않고 하루에 올라가는 높이 (A-B)로 총 높이를 나눴다. 낮에 올라가 정상에 도달 한 ..
문제 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 www.acmicpc.net 문제풀이 수학문제다. 처음에 실수한 부분은 손익분기'점'을 구했다는 거다. 판매량과 비용이 같아지는 점이 아닌 판매량이 비용보다 큰 최초의 값을 구해야 한다. 경우의 수를 나눌 때는 손익분기점이 존..
문제 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 접근법 1. 수열에서 삭제한 숫자를 요세푸스 수열에 넣는다. * 이때 수열에서 삭제를 하게 될 때, 삭제 이후의 요소들이 자동으로 땡겨지게 하여야 하므로 ArrayList를 이용해 수열을 구현한다. * 삭제할 숫자를 가르키는 pointer 변수를 만든다. * 입력 받은 K는 그 다음 요세푸스 숫자를 가르키기 위한 숫자로 K=3이면 삭제한 숫자에서 3 떨어진 위치의 숫자가 요세푸스 숫자가 된다. 2. 수열에서 숫자를 삭제하게 되면 뒤에 있는 요소가 앞으로 땡겨지기 때문에 현재 pointer가 +1 이 된다. 따라서 그 다음 요세푸스 숫자를 가리..
문제 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리 www.acmicpc.net 문제풀이 문제에 나와있는대로 따라가면 된다. 1)제일위에 카드를 버린다. 2) 그 다음 제일 위의 카드를 꺼낸다. 3) 꺼낸 카드를 맨 뒤로 보낸다. 이걸 카드가 하나남을때 까지 반복한다. 주의 해야..