코딩테스트 23

[코드트리] 스승의 은혜3

진짜,,, 정말 쉬운문젠데,,,, 너무 어렵게 생각해서 못풀었던 문제라 반성하는 의미로 기록한다.. 하나의 객체에서 두개의 변수를 각각 정렬하고, 각각의 객체를 더해서 살수있는 물건의 갯수 찾는 문젠데,, 물건가격, 배송비 따로 정렬하려고 해서 특정 테스트케이스에서만 막혔다....... 정답은 물건가격이랑 배송비를 같이 더해서 오름차순 정렬하면 되는건데,, 막상 처음 틀리면 이생각이 절대 안난다... 흑흑 선생님이 N명의 학생에게 B만큼의 예산으로 선물을 주려고 합니다. 학생 i가 원하는 선물의 가격 P(i)와 배송비 S(i)가 있고, 선생님에게는 선물 하나를 정해서 반값으로 할인받을 수 있는 쿠폰이 있습니다. 선생님이 선물 가능한 학생의 최대 명수를 구하는 프로그램을 작성해보세요. 단, 선물의 가격은 ..

[코드트리] 상해버린 치즈

이 문제는 주어진 조건에 따라 완전탐색을 하며 그 최댓값을 찾는 문제이다. 이런 류 문제는 쉽지만 조건이 까다로워서 애먹었다. 이에 기록한다. N명의 사람이 M개의 치즈를 먹었는데 정확히 하나의 치즈가 상했다는것을 뒤늦게 알았습니다. 특정 사람이 어떤 치즈를 언제 먹었는지에 대한 기록이 총 D번 주어지고, 특정 사람이 언제 확실히 아팠는지에 대한 기록이 S번 주어지게 됩니다. 완벽하게 기록된 것이 아니기 때문에, 아프다고 기록되어 있는 사람 외의 다른 사람도 아플 수 있습니다. 상한 치즈를 먹은 사람에게 약을 복용시켜야 할 때, 약이 최대 몇 개나 필요할지를 구하는 프로그램을 작성해보세요. 단, 상한 치즈를 먹게 되면 1초가 지나야 아프기 시작하며, 상한 치즈를 먹지 않는 한 배가 아플 일은 없다고 가정..

[코드트리] 숨은 단어 찾기 2

완전탐색과 이동탐색을 합친 문제다 어렵지는 않았는데 해당 기능을 자주 이용할 수 있을것같아 기록함. N과 M이 주어지고 또 N * M의 문자열이 주어지면 가로, 세로, 대각선 뱡향으로 도중에 방향을 틀지 않고 인접하여 나오는 ‘LEE’ 의 개수를 구하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에 정수 N과 M이 공백을 사이에 두고 주어집니다. 1 ≤ N, M ≤ 50 출력 형식 첫 번째 줄에 모든 'LEE'의 개수를 출력합니다. 입출력 예제 예제1 입력: 4 6 TAEHGI EELVWE LEELSE HBLUEL 출력: 6 예제 설명 아래 그림과 같이 'LEE'의 개수는 총 6개 입니다. 내 코드 import java.util.*; public class Main { static int n; sta..

[코드트리] 거울에 레이저 쏘기 2

여러번 풀어봤지만 잘 안풀려서 해설을 보고 분석하려고 한다. 어려움난이도는 아직 확실히 어려운거같다. N * N 크기의 격자 안에 각 칸마다 거울이 하나씩 들어 있습니다. 각 거울은 \나 /의 형태를 띄고있고, 격자 밖 4N개의 위치 중 특정 위치에서 레이저를 쏘았을 때, 거울에 튕기는 횟수를 구하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에 N이 주어집니다. 두 번째 줄부터 N개의 줄에 걸쳐 맵의 정보가 주어집니다. 각 줄에는 각 행에 해당하는 정보가 공백없이 주어집니다. 이는 /나 \ 문자로만 이루어져 있습니다. 그 다음 줄에는 레이저를 쏘는 위치 K가 주어집니다. K는 다음과 같이 위에서 아래 방향으로 1행 1열 칸으로 들어오는 곳을 1번으로 하여 시계 방향으로 돌며 가능한 시작 위치에 순서..

[코드트리] 빙빙 돌며 숫자 사각형 채우기

배열을 시계방향으로 돌면서 배열을 채우는 문제이다. 쉬운 문제이지만 언젠가 한번 또 볼 일이 있을 거 같아 메모한다. n * m크기의 직사각형에 숫자 1부터 순서대로 증가시키며 달팽이 모양으로 채우는 코드를 작성해보세요. 달팽이 모양이란 왼쪽 위 모서리에서 시작해서, 오른쪽, 아래쪽, 왼쪽, 위쪽 순서로 더 이상 채울 곳이 없을 때까지 회전하는 모양을 의미합니다. n : 행(row), m : 열(column)을 의미합니다. 입력 형식 n과 m이 공백을 사이에 두고 주어집니다. 출력 형식 숫자로 채워진 완성된 형태의 n * m 크기의 사각형을 출력합니다. (숫자끼리는 공백을 사이에 두고 출력합니다.) 입출력 예제 예제1 입력: 4 4 출력: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8..

[코드트리] 작은 구슬의 이동

배열안에서 방향대로 이동하면서 벽에 부딪히면 방향을 전환하는 문제다. 행열 값이 0123이 아니라 1234로 들어와서 좀 헷갈렸는데 풀었다. 내가 지금 한발자국 더 가면 벽인지랑, 그 안에 범위안에 있는지에 대한 메소드로 두번 검증해야한다. 그리고 변수가 많아지다 보니 헷갈린다,, 지역변수랑 전역변수 이름을 최대한 다르게 해야겠다. 1개의 구슬이 n*n 격자 안에 놓여져 있고, 격자는 벽으로 둘러싸여 있습니다. 이 구슬은 방향을 갖고 있고, 해당 방향으로 1초에 한칸 씩 움직입니다. 구슬이 벽에 부딪히면 움직이는 방향이 반대로 뒤집혀 동일한 속도로 움직이는 것을 반복합니다. 이때 방향을 바꾸는 데에는 시간이 1만큼 소요됩니다. 처음 주어진 그림을 예로 4초 뒤까지의 모습을 순서대로 그려보면 다음과 같습니..

[코드트리] 악수와 전염병의 상관관계 2

난이도는 어려움. 푸는데 40분정도 걸렸고,, 초반에 잘못 생각했던 분기처리를 마지막까지 남겨놔서 여러번 틀렸다. 문제는 다음과 같다. N명의 개발자들이 있으며, T번에 걸쳐 t초에 x개발자가 y개발자와 악수를 나눈 정황이 주어집니다. 1명의 개발자가 처음에 이 전염병을 옮기기 시작한 것이 확실해 졌고, 개발자가 이 병에 감염된 후에는 정확히 K번의 악수 동안만 전염병을 옮기게 되고, 그 이후부터는 전염병에 걸려있지만 새로 옮기지는 않게 됩니다. 개발자들의 악수에 대한 정보와 처음 전염병에 걸려 있는 개발자의 번호 P가 주어졌을 때, 모든 악수를 진행한 이후에 최종적으로 누가 전염병에 걸리게 되었는지를 알아내는 프로그램을 작성해보세요. 단, 전염된 사람끼리 만나도 전염시킨 것으로 간주해야 함에 유의합니다..

[코드트리] 신기한 타일 뒤집기

풀었는데 로직 저장해두면 좋을거같아서 기록 일직선으로 무한히 나열된 회색 타일이 있습니다. 이 타일은 신기한 타일이기 때문에, 현재 타일의 색이 어떤 색인지와는 상관없이 왼쪽으로 뒤집으면 흰색으로 바뀌고, 오른쪽으로 뒤집으면 검은색으로 바뀌게 됩니다. 아무 타일에서 시작하여 n번의 명령에 걸쳐 움직입니다. 명령은 "x L", "x R" 형태로만 주어지며, "x L"의 경우 왼쪽으로 이동하며 순서대로 현재 위치 타일포함 총 x칸의 타일을 왼쪽으로 뒤집습니다. "x R"의 경우 오른쪽으로 이동하며 순서대로 현재 위치 타일포함 총 x칸의 타일을 오른쪽으로 뒤집습니다. 각 명령 이후에는 마지막으로 뒤집은 타일 위치에 서있는다고 가정합니다. 모든 명령을 실행한 뒤의 흰색, 검은색 타일 수를 각각 출력하는 프로그램..

[코드트리]왔다 갔던 구역 2

설명을 봐도 잘 모르겠어서 기록하면서 분석하려고 쓴다.. 위치 0에서 시작하여 n번의 명령에 걸쳐 움직인 뒤, 2번 이상 지나간 영역의 크기를 출력하는 프로그램을 작성해보세요. 단 명령은 “x L“, “x R” 형태로만 주어집니다. "x L" 의 경우 왼쪽으로 x만큼 이동해야 함을, "x R"의 경우 오른쪽으로 x만큼 이동해야 함을 뜻합니다. 입력 형식 첫 번째 줄에는 n이 주어집니다. 두 번째 줄 부터는 n개의 줄에 걸쳐 명령이 주어집니다. 형태는 “x L” 혹은 “x R” 입니다. 1 ≤ n ≤ 100 1 ≤ x ≤ 10 출력 형식 첫 번째 줄에 명령을 주어진 순서대로 수행했을 때, 2번 이상 지나간 영역의 크기를 출력합니다. 입출력 예제 예제1 입력: 6 2 R 6 L 1 R 8 L 1 R 2 R ..