일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- java
- 자바
- 알고리즘
- Two Pointer
- ArrayList
- 아스키코드
- 인프런
- 누적 계산
- array
- 임시반장 정하기
- GitHub #Commit #BaekJoon
- 큰 수 출력하기
- 보이는 학생
- 백준
- Pointer
- 투 포인터
- 두 배열 합치기
- 공통원소 구하기
- 코테준비
- 10992
- 격자판
- 10991
- 최대 길이
- 모든행과열대각선의합
- 등수구하기
- 가장 짧은 문자거리
- 점수계산
- 뒤집은 소수
- 배열
- 연속부분수열
- Today
- Total
목록[Java] 인프런 문제풀이/Array(배열) (12)
ezhoon

📖 문제 첫 줄에는 반 학생 수 N명 과 M이 주어진다. 두 번째 줄부터는 M개의 줄에 걸쳐 수학 테스트 결과가 학생 번호로 주어진다. 학생 번호가 제일 앞에서부터 1 ~ N 등 순으로 표현된다. 이때 멘토링을 하고자 하는데 멘토가 되는 학생은 멘티의 수학 등수가 모든 테스트에서 앞서야 한다. 이런 경우에 멘토링을 할 수 있는 짝이 몇 가지가 나오는지 출력하시오 ⚠️ 주의사항 A 학생이 B 학생의 멘토가 되기 위해선 모든 등수가 앞서야 하며 반대로 B가 A의 멘토가 되는 경우의 수도 생각해야한다. 본인의 경우는 어차피 등수가 똑같으므로 따로 조건부를 할 필요가 없을것이다. ✍️ 이해 * 1. 학생 수 N명 M개의 줄로 이루어진 수학테스트 결과 * 2. 멘토(선생) / 멘티(학생) * 2-1. A(멘토) ..

📖 문제 첫째 줄에는 반의 학생 수를 나타내는 정수가 주어진다. 둘째 줄부터는 1번 학생부터 차례대로 각 줄마다 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 5개의 정수가 빈칸 하나를 사이에 두고 주어진다. 반 학생 중에서 1~5학년까지 지내오면서 한 번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 지정한다. 1학년 2학년 3학년 4학년 5학년 1번 학생 2 3 1 7 3 2번 학생 4 1 9 6 8 3번 학생 5 5 2 4 4 ⚠️ 주의사항 한 번이라도 같은 반이었던 사람이 가장 많은 학생을 찾아야 한다. A랑 B가 5년 동안 같은 반이었다고 해도 1번이다. 학년은 1~5학년까지 동일하며 달라지는 것은 학생 수이다. ✍️ 이해 * 1. 반의 학생 수 입력 * 2. 둘째줄 부터 1번..

📖 문제 첫 줄에 자연수 N이 주어진다 지도 정보가 N * N 격자판이 주어진다. (격자에는 그 지역의 높이가 쓰여있다.) 격자판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역이다. 격자판의 가장자리는 0으로 초기화돼있다고 가정한다. 봉우리 지역이 몇 개 있는지 출력하기. 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개이다. ⚠️ 주의사항 상하좌우로 비교해야 하는데 (0,0)의 경우에는 왼쪽 위가 둘 다 null 값이라서 비교하려고 하면 오류가 난다. 가장자리가 0으로 초기화돼있다는 점을 이용해서 풀면 된다. 상하좌우 비교를 어떻게 하면 좋을지 생각해보기 ✍️ 이해 두 가지의 이해 내용이 있습니다. 아래는 제가 맨 처음 문제를 보고 이해하고 이렇게 풀면 되겠다 싶어서 적어 둔 것이 있습..

📖 문제 5 * 5 격자판에 아래와 같이 숫자가 주어진다. 행, 열, 대각선의 합 중 가잔 큰 합을 출력한다. ⚠️ 주의사항 모든 합이 주어진 배열에서 어떻게 최댓값 구할지 생각하기 모든 행과 열의 합 / 대각선의 합 각각의 for문으로 계산 ✍️ 이해 * 1. 첫 줄에 자연수 N 이 주어지고 N * N의 격자판이 주어지므로 이중 for문으로 temp[i][j] 값 입력 * 2. 행의 합 열의 합 두 대각선의 합 hap 배열에 저장 * 3. 대각선 할 때 왼쪽에서 오른쪽([0~4][0~4] 행 == 열) 과 오른쪽에서 왼쪽으로 [0][4] [1][3] [2][2] [3][1] [4][0] 행 = 열(N - i -1) 두 가지 생각 * 4. sort 정렬 후 size() - 1 해서 마지막 값 추출하면 끝..

📖 문제 N 명의 학생 입력 각 학생의 등수 출력 같은 점수가 입력될 경우 높은 등수로 동일 처리 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그다음 학생은 4등이 된다. ⚠️ 주의사항 같은 점수가 있을 때 높은 등수로 처리해야 한다는 점 말고는 딱히 없어보인다. ✍️ 이해 * 1. 첫 줄 학생 수 입력 * 2. 두 번째 줄 국어점수 N개의 점수 입력. * 3. 등수 출력이므로 국어 점수 배열 i -> N까지 비교하면서 더 큰 값이 있을때마다 cnt 값 증가 후 마지막에 answer 배열에 등수 입력 * 4. 같은 점수가 있을 경우 높은 등수로 처리이므로 같은 경우는 아무것도 안해주면 됨 ✏️ 풀이 import java.io.BufferedReader; import java.i..

📖 문제 첫째 줄에 문제의 개수 N이 주어진다. 문제가 맞는 경우에는 1점으로 계산하며 연속으로 답이 맞는 경우에는 2점 3점 +1씩 누적된다. 9개의 OX문제 점수표가 있다고 하면 총점수는 1 + 1 + 2 + 3 + 1 + 2 = 10 점이다. 점수표 채점 1 0 1 1 1 0 0 1 1 점수 1 0 1 2 3 0 0 1 2 ⚠️ 주의사항 연속으로 맞춘 경우 cnt = cnt + 1 틀린 경우 cnt = 0 ✍️ 이해 * 1. N 값 입력 * 2. 0과 1로 이루어진 배열 입력 * 3. 배열[i] 에 값이 1이면 cnt ++ * 4. 점수[i] = cnt (연속으로 맞으면 증가) * 5. 틀린 경우는 점수[i] = 0 cnt -> 0 ✏️ 풀이 import java.io.BufferedReader; ..

📖 문제 N개의 자연수 입력되면 그 자연수를 뒤집는다. 소수이면 출력하며 소수가 아닌경우는 빈공간으로 만든다. 예로 32를 뒤집으면 23이고 23은 소수이다. 이런 경우에 출력한다는 것이다. 첫 자리부터의 연속된 0을 무시한다. ✍️ 이해 첫 줄에 자연수의 개수 N을 입력한다. N의 개수만큼 자연수를 배열에 입력한다. 배열에 자연수들을 reverse().toString() 으로 뒤집어준다. StringBuilder(" ? ").reverse().toString() ?에는 String 값만 들어갈 수 있으므로 배열 입력 받을 때 String 배열로 시작한다. boolean을 이용해서 소수이면 true 반환 후 answer.add(값) 넣어주면 된다. ⚠️ 주의사항 reverse().toString() 을 ..

📖 문제 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력 20이 입력되면 1 ~ 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. ✍️ 이해 우선 "에라토스테네스 체"가 무엇인지부터 알아야 할 것 같다. 에라토스테네스 체란? 2부터 소수를 구하고자 하는 구간의 모든 수(N)를 나열한다. 그림에서 회색 사각형들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 자기 자신을 제외한 3의 배수를 모두 지운다. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색) 자기 자신을 제외한 5의 배수를 모두 지운다. 남아있는 수 가..

문제 총 항 수 N만큼의 피보나치 수열 출력 이해 피보나치 수열의 개념이 먼저 필요하다. 피보나치 수열이란? - 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다. - 만약 7이 입력 된다면 1 + 1 + 2 + 3 + 5 + 8 + 13 이런 식의 수열이다. - 하지만 첫 번째, 두 번째 항은 앞의 2개의 숫자가 1이거나 없으므로 1로 고정된다. N개 이지만 첫 번째, 두 번째 항은 1로 고정이므로 for문의 시작은 2부터 시작한다. 배열[i] = 배열[i-2] + 배열[i-1] ⚠️ 주의사항 첫 번째, 두번 째 항은 1 고정 앞의 2개의 수를 합하여 더해야한다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io...

문제 총 N번의 게임을 하여 A가 이기면 A, B가 이기면 B를 출력하고 비기는 경우에는 D를 출력한다. 가위 : 1 바위 : 2 보 : 3 이해 N이 5라고 했을 때 아래와 같다. 회수 1 2 3 4 5 A 2 3 3 1 3 B 1 1 2 2 3 승자 A B A B D N을 입력받고 N의 수만큼 for문으로 A의 배열, B의 배열에 가위 바위 보 값을 입력한다. 비길 경우 'D' A : 가위 / B: 보 -> 'A' A : 바위 / B : 가위 -> 'A' A : 보 / B : 바위 -> 'A' 위의 경우를 제외하고는 전부다 B가 이긴 경우이므로 더 이상 if문을 사용할 필요가 없다. 이번에도 StringBuilder 이용해서 append 해 볼 생각이다. ⚠️ 주의사항 비기는 경우와 A가 이기는 모든..