728x90
다시 보면 좋은 코드
- 배열을 뒤집으면서 바꾸는 코드
// 예시)
// [1, 2, 3, 4, 5] => [5, 4, 3, 2, 1]
for (int j=a, k=b; j < k; j++, k--) {
int temp = answer[j];
answer[j] = answer[k];
answer[k] = temp;
}
- 배열에서 첫 번째 값부터 뒤지면서 찾는 최대값 최소값
// 상황에 따라 min/max 변수의 값을 초기화 하고
// 모든 변수랑 비교하면서 min/max 변수를 업데이트함.
// 최소값 구하기
int min = numbers[0];
for(int i = 1; i < N; i++) {
if (numbers[i] < min) {
min = numbers[i];
}
}
// 최대값 구하기
int max = numbers[0];
for(int i = 1; i < N; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
문제집
10807번: 개수 세기 - 브론즈 5
- chatGPT가 Stream으로 처리한 정답
(Stream 공부를 해야겠다..)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int arraySize = Integer.parseInt(br.readLine());
int[] numbers = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.toArray();
int target = Integer.parseInt(br.readLine());
// 배열을 순회하며 target과 같은 숫자를 카운트
long count = Arrays.stream(numbers)
.filter(num -> num == target)
.count();
// 결과 출력
bw.write(count + "\n");
}
}
- 내가 푼 정답
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int firstParam = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int thirdParam = Integer.parseInt(br.readLine());
int sum = 0;
for (int i = 0; i < firstParam; i++) {
int number = Integer.parseInt(st.nextToken());
if (number == thirdParam) sum++;
}
bw.write(sum + "\n");
bw.flush();
br.close();
bw.close();
}
}
10871번: X보다 작은 수 - 브론즈 5
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
StringTokenizer st2 = new StringTokenizer(br.readLine());
for (int i = 0; i < a; i++) {
int number = Integer.parseInt(st2.nextToken());
if(number < b) {
bw.write(number + " ");
}
}
bw.write("\n");
bw.flush();
}
}
10818번: 최소, 최대 - 브론즈 3
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
// 정수 배열을 출력
int[] numbers = new int[N];
for(int i = 0; i < N; i++) {
numbers[i] = Integer.parseInt(st.nextToken());
}
// 최소값 구하기
int min = numbers[0];
for(int i = 1; i < N; i++) {
if (numbers[i] < min) {
min = numbers[i];
}
}
// 최대값 구하기
int max = numbers[0];
for(int i = 1; i < N; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
bw.write(min + " " + max + "\n");
bw.flush();
}
}
2562번: 최댓값 - 브론즈 3
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] numbers = new int[9];
for (int i = 0; i < 9; i++) {
numbers[i] = Integer.parseInt(br.readLine());
}
int idx = 1;
int max = numbers[0];
for(int i = 1; i < 9; i++) {
if (numbers[i] > max) {
max = numbers[i];
idx = i + 1;
}
}
bw.write(max + "\n");
bw.write(idx + "\n");
bw.flush();
}
}
10810번: 공 넣기 - 브론즈 3
※ 문제를 꼼꼼하게 읽어봐야한다 ※
문제: 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] basket = new int[N];
for (int i = 0; i < M; i++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st2.nextToken());
int b = Integer.parseInt(st2.nextToken());
int c = Integer.parseInt(st2.nextToken());
for (int j = a-1; j <= b-1; j++) {
basket[j] = c;
}
}
for(int i = 0; i < basket.length; i++) {
bw.write(basket[i] + " ");
}
bw.write("\n");
bw.flush();
}
}
10813번: 공 바꾸기 - 브론즈 2
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 01. 배열 만들기
int[] numbers = new int[N];
for (int i = 0; i < N; i++) {
numbers[i] = i + 1;
}
// 02. 바구니 공 바꾸기
for (int i = 0; i < M; i++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st2.nextToken()) - 1;
int b = Integer.parseInt(st2.nextToken()) - 1;
int temp = numbers[a];
numbers[a] = numbers[b];
numbers[b] = temp;
}
// 03. 정답 작성
for (int i = 0; i < numbers.length; i++) {
bw.write(numbers[i] + " ");
}
bw.write("\n");
bw.flush();
}
}
5597번: 과제 안 내신 분..? - 브론즈 1
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 01. 배열 만들기
// 배열의 생성 초기값은 0 이다.
int[] numbers = new int[30];
for (int i = 0; i < 28; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
numbers[a - 1] = 1;
}
// 02. 정답
for (int i = 0; i < 30; i++) {
if (numbers[i] == 0) {
bw.write(i + 1 + " ");
}
}
bw.flush();
}
}
3052번: 나머지 - 브론즈 2
- 나머지 값들 중에 중복 체크만 해주면 되서 Set 인터페이스를 사용해보았다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Set<Integer> numbers = new HashSet<>();
for (int i = 0; i < 10; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int number = Integer.parseInt(st.nextToken());
numbers.add(number % 42);
}
bw.write(numbers.size() + "\n");
bw.flush();
}
}
10811번: 바구니 뒤집기 - 브론즈 2
- 이 놈... 생각보다 고민을 많이 했다...
- 다른 사람들 블로그를 보면 for 문을 while 문으로 작성해놓았다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 배열 생성
int[] answer = new int[N];
for (int i = 0; i < N; i++){
answer[i] = i + 1;
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken()) - 1;
int b = Integer.parseInt(st.nextToken()) - 1;
// 1 5 -> 0 4
// 2 8 -> 1 7
for (int j=a, k=b; j < k; j++, k--) {
int temp = answer[j];
answer[j] = answer[k];
answer[k] = temp;
}
}
for (int i = 0; i < answer.length; i++) {
bw.write(answer[i] + " ");
}
bw.flush();
bw.close();
}
}
1546번: 평균 - 브론즈 1
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int firstParam = Integer.parseInt(br.readLine());
// 01. 배열에서 최대값 구하기.
StringTokenizer st = new StringTokenizer(br.readLine());
int max = 0;
int[] numbers = new int[firstParam];
for (int i = 0; i < firstParam; i++) {
numbers[i] = Integer.parseInt(st.nextToken());
if (numbers[i] > max) {
max = numbers[i];
}
}
// 02. 평균 구하기.
double sum = 0;
for (int i = 0; i < firstParam; i++) {
sum += ((double) numbers[i] / max) * 100;
}
double average = sum / firstParam;
bw.write(average + "\n");
bw.flush();
br.close();
bw.close();
}
}
11720번: 숫자의 합
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int sum = 0;
int firstParam = Integer.parseInt(br.readLine());
String[] numbers = br.readLine().split("");
for (int i = 0; i < firstParam; i++) {
int secondParam = Integer.parseInt(numbers[i]);
sum += secondParam;
}
bw.write(sum + "\n");
bw.flush();
bw.close();
br.close();
}
}
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[백준] 일반 수학 1 문제집 (0) | 2024.11.21 |
---|---|
[백준] 2차원 배열 문제집 (완료) (0) | 2024.11.19 |
[탐색] 이진 탐색(Binary Search) (0) | 2023.08.02 |
[정렬] 병합 정렬(merge sort) (0) | 2023.08.02 |
[탐색] 너비 우선 탐색(BFS) (0) | 2023.07.31 |