https://www.acmicpc.net/problem/1769문제문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그중 하나로 우리가 풀고 싶은 문제를 좀 더 쉬운 문제로 바꾸어 풀어 보는 방법이 있다.소위 "다른 문제로 바꾸어 풀기"라는 이 방법은, 아래와 같은 과정으로 이루어진다.풀고자 하는 문제를 다른 문제로 변환한다.변환된 문제의 답을 구한다.구한 답을 원래 문제의 답으로 삼는다.이를 보다 쉽게 이해하기 위해서, 다음의 초등학교 수학 수준의 예를 들어 보자. 문제 1. "양의 정수 X는 3의 배수인가?"이 문제를 아래와 같이 변환하는데, X의 각 자리의 수를 단순히 더한 수 Y를 만든다. 예를 ..
코딩테스트/백준
문제스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.입력첫 행은 N이며, 전체 케이스의 개수이다.N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.N = 51 ≤ L ≤ 25출력각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다. 문제해석 문자열이 주어지며 문자열에 각 단어는 공백(스페이드)로 구분한다. 구분한 단어들을 역순으로 출력하..
https://www.acmicpc.net/problem/17608문제 (브론즈2)아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다.N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는지를 알아내는 프로그램을 작성하려고 한다.입력첫 번째 줄에는 막대기의 개수를 나타내는 ..
https://www.acmicpc.net/problem/27160 문제 해결문제분석총 4종류의 과일이 최대 5개까지 그려진 카드이며, 과일의 종류는 딸기, 바나나, 라임, 자두이다.펼쳐진 카드 중 한 과일의 종류 이상의 과일이 정확히 5개 있는 경우 종을 누른다.입력값은 펼쳐진 카드를 의미하며 과일의 종류와 그려진 개수를 나타낸다.이때, 종을 눌러야한다면 YES, 아니면 NO를 출력한다.문제풀이주어진 입력값을 **map**을 이용해 (과일종류, 그려진 개수) 방식으로 과일 별 그려진 총개수를 구한다.그런 다음 map의 값을 순회하며 값이 5이면 YES를 출력하고 return 시켜 프로그램을 종료한다.루프가 끝났는데도 종료되지 않았다면 종을 치지 않는다는 것이므로 NO를 출력한다.import java.i..
https://www.acmicpc.net/problem/25593문제 해결문제분석고정된 근무시간이 있다.08:00~12:00, 12:00~18:00, 18:00~22:00, 22:00~08:00으로 각각 4, 6, 4, 10시간의 근무두 번째 입력부터 위 고정된 근무시간이 반복적으로 사용된다. (한 주마다 4줄씩 반복)공백으로 구분된 7개의 근무자가 표시된다.(주단위이기 때문에 7일을 나타낸다.)단, ‘-’ 표기는 근무자가 없음을 의미한다.각 주별로 근무자의 근무시간 합산을 구한 후 최대근무자와 최소근무자 사이 시간 차이가 12시간이 초과된다면 No 아니면 Yes 출력한다.문제풀이근무시간 대 별 근무시간은 고정되어 있으므로 getWorkPeriodHours() 메서드를 만들어서 활용하였다.입력 줄별로 ..
https://www.acmicpc.net/problem/29701문제혜민이는 요즘 모스 부호에 관심이 많아졌다. 모스 부호는 짧은 신호와 긴 신호를 적절히 조합하여 문자 기호를 표기하는 방식이다. 각 문자를 나타내는 방식은 미리 정해져 있는데, 예를 들어, 짧은 신호를 '.', 긴 신호를 '-'로 나타낸다면, 모스 부호로 알파벳 'A'는 '.-', 숫자 1은 '.----'와 같이 표기할 수 있다. 모스 부호를 알고 있으면 위험한 상황에서 구조 요청을 하는 데 유용할 것 같아, 혜민이는 평상시에 친구들과 연락을 주고받을 때도 모스 부호를 사용하려고 한다. 혜민이는 친구들이 보내온 모스 부호를 올바르게 해독했는지 바로바로 확인하고 싶어졌다. 알파벳 A-Z, 숫자 0-9, 기호 ', ', '.', '?', ..
https://www.acmicpc.net/problem/2605문제점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 먹게 된다. 어떻게 하면 이러한 상황을 바꾸어 볼 수 있을까 고민하던 중 선생님이 한 가지 방법을 내놓았다. 그 방법은 다음과 같다.학생들이 한 줄로 줄을 선 후, 첫 번째 학생부터 차례로 번호를 뽑는다. 첫 번째로 줄을 선 학생은 무조건 0번 번호를 받아 제일 앞에 줄을 선다. 두 번째로 줄을 선 학생은 0번 또는 1번 둘 중 하나의 번호를 뽑는다. 0번을 뽑으면 그 자리에 그대로 있고, 1번을 뽑으면 바로 앞의 학생 앞으로 가서 줄을 선다. 세 ..
문제 https://www.acmicpc.net/problem/24416 문제분석피나보치 수열을 계산할 때, 재귀적 방법과 동적 프로그래밍을 사용하여 두 방식의 호출횟수를 비교하는 문제5 ≤ n ≤ 40문제풀이두 함수의 동작 횟수를 구하기 위한 두 변수 C1,C2 을 선언하고 문제에 나온 위치에 도달 시 증가처리해준다.두 함수를 실행한다.C1, C2를 출력한다.package backjoon.bronze.lv1;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class B24416_1 { static int C1 = 0; static int C2 = 0; public..