전체 글

전체 글

    백준 1436번 영화감독 숌 [ Java ]

    1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조 www.acmicpc.net 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타..

    백준 2231번 분해합 [ Java ]

    문제 보기 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그 www.acmicpc.net 음.. 자리수의 합을 구할 수 있는가?에 대한 문제였던거같습니다. 유사한 문제를 풀어본 경험이 있었습니다. 형변환을 이용해서 풀었습니다..

    백준 2798번 블랙잭 [ Java ]

    문제 보기 2798번: 블랙잭 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버젼의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 www.acmicpc.net bf 두 번째 문제입니다. 세 카드의 합의 초기화를 max = card[0] + card[1] + card[2]로 해준 덕분에 틀렸었습니다 ㅠㅠ import java.util.*; public ..

    백준 7568번 덩치 [ Java ]

    문제보기 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56,177), (45,165) 라고 한다면 A의 덩치가 B보다 큰 www.acmicpc.net 처음 풀어보는 브루트포스 문제였습니다. 한 사람씩 서로서로 비교해서 총 n^n의 비교를 해야하는 문제입니다. import java.util.*; public class Main { public sta..

    백준 11729번 하노이 탑 이동 순서 [ Java ]

    문제보기 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5 www.acmicpc.net 대부분의 사람들이 재귀를 처음 배울 때 보는 문제인듯 싶습니다. 저는 처음 배울 때 치곤 어렵다고 생각하지만 ㅠㅠ 그래서 원리는 여기저기서 듣다 보니 기억에 박혀있는 것 같습니다...

    백준 2447번 별 찍기 - 10 [ Java ]

    백준 2447번 별 찍기 - 10 [ Java ]

    문제 보기 2447번: 별 찍기 - 10 첫째 줄에 N이 주어진다. N은 항상 3의 제곱꼴인 수이다. (3, 9, 27, ...) (N=3k, 1 ≤ k 별 찍기 11 당시에 재귀를 처음 접했을 때여서 손도 못대서 이걸 참고했었습니다. 원하는 출력은 빨리 뽑아 냈지만 계속 시간 초과가 나서 원인에 대해 알아보는 것에 더 많은 시간을 쓴 것 같습니다. 1. 배열의 각 인덱스를 좌표(x, y)로 생각하고 테스트케이스에 대한 좌표를 그렸습니다. 2. 다음 좌표의 넘겨줄 8개의 파트를 나누고 해당 파트에 대해 재귀를 했습니다. 얼마나 할지(횟수)..

    백준 1002번 터렛 [ Java ]

    문제 보기 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 고등학교에 배운 원에 접점의 조건들을 나누는 문제였습니다. 나올 수 있는 결과 값을 기준으로 나누었습니다. ( -1, 0, 1, 2 ) 변수는 두 점사의 거리(dotDistance), 반지름의 합(circleSum), 반지름의 차(circleSub)를 사용하였습니다. 1. 겹칠 때( -1 ) 동심원이면서 같은 반지름일 경우 ( dotDistance == circleSub ) 2. 안만날 때 ( 0 ) 한 원이 다른원의 내부에 있지만 만나지 않는 경우 ( dotDistance < circleSub ) 한 ..

    백준 3053번 택시 기하학 [ Java ]

    백준 3053번 택시 기하학 [ Java ]

    문제 보기 3053번: 택시 기하학 문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 www.acmicpc.net 읽어 보시면 각각의 기하학에서의 두 점 사이의 거리가 나옵니다. 각각의 기하학에서의 원은 동일하게 "면 상의 어떤 점에서 거리가 일정한 점들의 집합" 정의된다고 하였으므로, 유클리드는 기존에..

    프로그래머스 코딩테스트 연습 - 가장 큰 수 [ javascript ]

    보기엔 쉬워보였는데 풀이가 안떠올라서 한참 걸렸습니다..ㅠ function solution(numbers) { var answer = ''; if (numbers.reduce((a,b)=>a+b)==0) {return "0";} let num = numbers.map(x=>x.toString()); // string형변환 num.sort((a, b)=>{ let num1 = a+b, num2 = b+a; return num1-num2; }); let number = num.map(x=>x.toString()); for (let i = 0; i < num.length; i++) { answer+=number.pop(); } return answer; } reduce와 map 메소드를 처음 사용해 봤습니다...

    백준 4153번 직각삼각형 [ Java ]

    피타고라스의 정리에 대한 문제였습니다. 자연수 3개를 입력받아 정렬 후 공식을 사용했습니다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int []num = new int[3]; for(int i=0; i