코딩테스트/문제풀이 46

[코드트리] 홀수 짝수의 묶음

간만에 봐도 잘 이해가안되는 문제가 생겨서 기록한다.. 그리고 기간이 얼마안남아서,, 흑흑 증말 어렵다 N개의 숫자들이 주어지면 주어진 숫자들을 전부 사용하여, 각 묶음으로 나눠 각각의 합을 구했을 때 첫 번째 묶음부터 순서대로 그 합이 짝수, 홀수, 짝수, 홀수, 짝수, … 이렇게 짝수에서 시작하여 짝홀이 계속 번갈아가면서 나오게끔 하는 만들 수 있는 최대 묶음 수를 구하는 프로그램을 작성해보세요. 단, 주어진 순서에 상관없이 묶음을 만들어도 됩니다. 입력 형식 첫 번째 줄에는 주어지는 숫자의 개수 N이 주어집니다. 두 번째 줄에는 N개의 숫자가 공백을 사이에 두고 주어집니다. 2 ≤ N ≤ 1,000 1 ≤ 주어지는 숫자들 ≤ 100 출력 형식 첫 번째 줄에 짝홀이 계속 번갈아가면서 나오게끔 하는 만..

[코드트리] 세 수의 최대 곱

어려운 문제는 아니다, 시간복잡도를 벗어나는 이슈를 피해 적당한 값을 추려놓고 그 중에 선택을 하는 문제이다. 배우지 않았으면 풀지 못했을 문제일것같아 기록함 정수 n과 n개의 수가 주어졌을 때, 3개의 숫자를 적절하게 골라 나올 수 있는 곱 중 최대값을 구하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에 정수 n이 주어집니다. 두 번째 줄에 n개의 정수가 공백을 사이에 두고 주어집니다. 3 ≤ n ≤ 100,000 -1,000 ≤ 주어지는 수 ≤ 1,000 출력 형식 첫 번째 줄에 3개의 숫자를 적절하게 골라 나올 수 있는 곱 중 최대값을 출력합니다. 입출력 예제 예제1 입력: 12 10 -5 -2 4 -9 15 -3 6 0 7 1 -20 출력: 2700 예제 설명 -20, -9, 15를 추출하여..

[코드트리] ABC 줄 세우기

난이도는 낮지만 나중에 꼭 다시 사용할 알고리즘일것 같아 기록한다. 이것 외에도 최소값의 최댓값, 최댓값의 최솟값에 대한 알고리즘은 반드시 다시 숙지할것. 처음에 n명의 사람이 서있는 순서가 A부터 순서대로 알파벳으로 주어지면 알파벳 순으로 줄을 세우려고 합니다. 단, 순서대로 줄을 세우기 위해서는 인접한 두 사람의 위치를 계속 바꾸는 행위만 가능하다고 할 때, 가능한 최소 횟수를 구하는 프로그램을 작성해보세요. 예를 들어 4명의 사람이 서있는 순서가 A D C B와 같이 주어지면, A, B, C, D 순으로 줄을 세워야 합니다. 입력 형식 첫 번째 줄에 정수 n이 주어집니다. 두 번째 줄에 n명의 사람이 서있는 순서가 알파벳으로 공백을 사이에 두고 주어집니다. 1 ≤ n ≤ 26 출력 형식 첫 번째 줄..

[코드트리] X 달리기

이번에도 일어난 상황에 대해서 추론을 하여 적합한 답을 출력하는 문제다. 가야하는 거리가 주어지고, 시작속도를 1m/s로 시작해서 특정거리를 도달할때 다시 속도가 1m/s이여야 한다. 선택하여 속도를 1씩 늘리거나, 유지하거나, 1씩줄일수 있다. 가야하는 거리까지 가는데 가장 최단시간을 구해야한다. 오늘 뭔가 문제가 잘풀린다.. 나는 추론에 강한가,,, 후후후후,,,, Xm 만큼 달리기를 진행하려 합니다. 1m/s로 시작하되, 1초에 한 번씩 속도를 유지할 것인지, 1m/s 만큼 증가시킬 것인지, 1m/s 만큼 감소시킬 것인지를 결정할 수 있습니다. 단, 도착지에 도달하는 순간의 속력은 꼭 1m/s가 되어야만 합니다. 가능한 최단 시간을 구하는 프로그램을 작성해보세요. 단, 이동하는 도중 0m/s가 되어..

[코드트리] 코딩톡

일어난 상황에 대해서 추론을 하여 적합한 답을 출력하는 문제다. 메신저를 보낸사람과, 그 메시지를 보지않은 사람의 수들의 목록이 주어졌을때, 특정시점에서 해당 메시지를 읽지 않을 가능성이 있는사람을 출력하는 문제이다.. 어려움 난이돈데 금방 풀어서 기분이 좋고,, 아직 배우지는 않았지만 역탐색을 이용해서 처음 푼 문제이기때문에 기록한다. n명의 프로그래머들이 서로 채팅으로 대화할 수 있는 메신저방인 코딩톡에 초대되었습니다. 코딩톡 사람들의 이름은 'A'부터 n개의 대문자 알파벳이 순서대로 붙여져 있으며, 서로 대화를 하고 있습니다. 누군가 메신저방에 들어오게 되면, 이전에 보내진 모든 메세지를 읽게 됩니다. 각 프로그래머들이 언제 들어왔다가 나갔는지에 대한 정보는 전혀 없지만, 총 m개의 해당하는 메세지..

[코드트리] 스승의 은혜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번으로 하여 시계 방향으로 돌며 가능한 시작 위치에 순서..