본문 바로가기

전체 글

(162)
섹션 3. 투 포인터 & 슬라이딩 윈도우 - 2. 공통원소 구하기 📌 문제 설명A, B 두 개의 집합이 주어지면, 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 번째 줄: 집합 A의 크기 N (1 ≤ N ≤ 30,000)두 번째 줄: N개의 원소 (중복 없음)세 번째 줄: 집합 B의 크기 M (1 ≤ M ≤ 30,000)네 번째 줄: M개의 원소 (중복 없음)출력공통 원소를 오름차순으로 출력 (한 줄에 공백으로 구분)🔸 예제 입력 & 출력예제 입력 151 3 9 5 253 2 5 7 8 예제 출력 12 3 5💡 해결 방법두 배열을 정렬한 후, 투 포인터 방식으로 공통 원소를 찾습니다.두 포인터가 가리키는 값이 같으면 결과에 추가하고, 다르면 더 작은 쪽 포인터를 이동합니다.💻 코드 구현 (Java)packag..
섹션 3. 투 포인터 & 슬라이딩 윈도우 - 1. 두 배열 합치기 📌 문제 설명오름차순으로 정렬된 두 배열이 주어질 때 두 배열을 오름차순으로 병합하여 출력하는 프로그램을 작성합니다.📝 입력 & 출력입력첫 줄: 첫 번째 배열의 크기 N (1 ≤ N ≤ 100)둘째 줄: N개의 오름차순 정수셋째 줄: 두 번째 배열의 크기 M (1 ≤ M ≤ 100)넷째 줄: M개의 오름차순 정수출력오름차순으로 정렬된 하나의 배열을 한 줄로 출력🔸 예제 입력 & 출력예제 입력 131 3 552 3 6 7 9 예제 출력 11 2 3 3 5 6 7 9💡 해결 방법두 배열은 이미 정렬되어 있으므로 투 포인터 기법을 사용하여 효율적으로 병합할 수 있습니다.두 포인터 p1, p2를 이용하여 각 배열의 현재 위치를 비교하면서 결과 배열에 작은 값을 추가합니다.💻 코드 구현 (Java)pac..
섹션 2. Array - 12. 멘토링 📌 문제 설명M번의 수학 테스트 결과를 바탕으로 멘토와 멘티 쌍을 만들 수 있는 경우의 수를 구하는 문제입니다.멘토(A)는 모든 테스트에서 멘티(B)보다 등수가 앞서야 합니다.각 테스트의 결과는 등수 순서대로 학생 번호가 주어집니다.📝 입력 & 출력입력첫 줄: 학생 수 N(1 ≤ N ≤ 20), 테스트 수 M(1 ≤ M ≤ 10)이후 M줄: 각 줄에 테스트 결과가 등수 순으로 나열된 학생 번호출력멘토-멘티 쌍을 만들 수 있는 총 경우의 수🔸 예제 입력 & 출력예제 입력 14 33 4 1 24 3 2 13 1 4 2 예제 출력 13💡 해결 방법학생 A와 B를 모든 쌍에 대해 순회하며 비교합니다.모든 테스트에서 A가 B보다 앞 순위에 있으면 유효한 멘토-멘티 쌍으로 간주합니다.💻 코드 구현 (Jav..
섹션 2. Array - 11. 임시반장 정하기 📌 문제 설명김갑동 선생님이 임시 반장을 정하려고 합니다. 임시 반장은 1학년부터 5학년까지 한번이라도 같은 반이었던 사람이 가장 많은 학생입니다.학생 수와 각 학생의 1~5학년까지의 반 정보를 토대로 임시 반장을 정하세요.📝 입력 & 출력입력첫째 줄에 학생 수(N, 3 ≤ N ≤ 1000)가 주어집니다.둘째 줄부터 N개의 줄에 걸쳐 각 학생의 1학년부터 5학년까지의 반 정보가 주어집니다.출력임시 반장으로 선정된 학생 번호를 출력합니다.같은 반 학생 수가 같다면 번호가 작은 학생을 출력합니다.🔸 예제 입력 & 출력예제 입력 152 3 1 7 34 1 9 6 85 5 2 4 46 5 2 6 78 4 2 2 2 예제 출력 14💡 해결 방법모든 학생을 다른 모든 학생과 비교하여 같은 반을 했던 적이 있..
섹션 2. Array - 10. 봉우리 📌 문제 설명N*N 격자판에 지역의 높이가 주어집니다. 격자판에서 자신의 상하좌우에 위치한 숫자보다 큰 숫자를 봉우리라고 합니다. 격자의 가장자리는 0으로 초기화되었다고 가정하고, 봉우리가 몇 개인지 알아내는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 자연수 N(2 ≤ N ≤ 50)이 주어집니다.두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어집니다. (각 자연수는 100 이하입니다.)출력봉우리의 개수를 출력합니다.🔸 예제 입력 & 출력예제 입력 155 3 7 2 33 7 1 6 17 2 5 3 44 3 6 4 18 7 3 5 2 예제 출력 110💡 해결 방법각 격자점을 기준으로 상하좌우의 숫자와 비교하여 봉우리인지 확인합니다.가장자리는 0으로 초기화된 것으로 간주하여 따로 경계를..
섹션 2. Array - 9. 격자판 최대합 📌 문제 설명N*N 격자판이 주어졌을 때 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 찾아 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 자연수 N(2 ≤ N ≤ 50)이 주어집니다.두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어집니다. (각 자연수는 100 이하입니다.)출력행, 열, 대각선 합 중 최대값을 출력합니다.🔸 예제 입력 & 출력예제 입력 1510 13 10 12 1512 39 30 23 1111 25 50 53 1519 27 29 37 2719 13 30 13 19 예제 출력 1155💡 해결 방법각 행과 열, 두 대각선의 합을 구하면서 동시에 최대값을 갱신하여 최종 최대 합을 구합니다.💻 코드 구현 (Java)package partArray;..
섹션 2. Array - 8. 등수구하기 📌 문제 설명N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요.같은 점수가 있을 경우 높은 등수로 동일 처리합니다.예를 들어 최고점이 92점이고 3명이 92점을 받았다면 1등이 3명이고, 다음 학생은 4등이 됩니다.📝 입력 & 출력입력첫 줄에 N(3 ≤ N ≤ 100)이 입력됩니다.두 번째 줄에 국어점수 N개가 입력됩니다.출력입력된 순서대로 등수를 출력합니다.🔸 예제 입력 & 출력예제 입력 1587 89 92 100 76 예제 출력 14 3 2 1 5💡 해결 방법각 학생의 점수를 모든 학생과 비교해, 자기보다 높은 점수를 가진 학생의 수를 세어서 등수를 정합니다.💻 코드 구현 (Java)package partArray;import java.util..
섹션 2. Array - 7. 점수계산 📌 문제 설명OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말합니다. 시험에서 연속적으로 답을 맞히는 경우 가산점을 주어 점수를 계산합니다.연속으로 문제를 맞추면, 두 번째 문제는 2점, 세 번째 문제는 3점... K번째 문제는 K점입니다.틀린 문제는 0점입니다.예시로, 10개의 OX 문제의 정답이 다음과 같다면, 총점은 1+1+2+3+1+2=10점입니다.1 0 1 1 1 0 0 1 1 0📝 입력 & 출력입력첫째 줄에 문제의 개수 N (1 ≤ N ≤ 100)이 주어집니다.둘째 줄에는 N개 문제의 채점 결과(0 또는 1)가 주어집니다.출력총 점수를 출력합니다.🔸 예제 입력 & 출력예제 입력 1101 0 1 1 1 0 0 1 1 0 예제 출력 110💡 해결 방법문제를 순회하며, 연속된 정답 ..