10807
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
int sum=0;
Scanner input = new Scanner(System.in);
byte n = input.nextByte(); //5
int [] array = new int [n]; //5개 배열 생성, 인덱스는 0-4
for(int i=0;i<n;i++) {
array[i] = input.nextInt(); //인덱스 0-4까지 수 대입
}
int v=input.nextInt();
int res = 0;
for(int i=0;i<n;i++) {
if(array[i]==v) res += 1;
}
System.out.println(res);
}
}
10871
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(); //5
int x=input.nextInt(); //비교할 정수 x
int [] array = new int [n]; //5개 배열 생성, 인덱스는 0-4
for(int i=0;i<n;i++) {
array[i] = input.nextInt(); //인덱스 0-4까지 수 대입
if(array[i]<x) System.out.print(array[i]+ " ");
}
}
}
- 배열과 반복문의 시너지를 잘 느낄 수 있던 문제
- 10807을 풀때는 for문을 두번 썼는데, 10871을 풀다보니 문득 그럴필요가 없다는걸 깨닫게 되었다.. 단계적으로 이 코드 작성 후 다음 실행할 코드 작성 후 이런식으로 생각하다보니 for문을 두개 쓰게 되었던 것 같다 단순히 문제를 맞추는 것도 중요하지만 좋은 코드를 짜는것도 중요하니까 ! 앞으론 문제를 풀면서 더 효율적인 방법이 없는지 계속 고민을 해봐야겠다
10818
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int [] array = new int [n];
for(int i=0;i<n;i++) {
array[i] = input.nextInt();
}
int min = array[0];
for(int i=1;i<n;i++) {
if(array[i]<min) min=array[i];
}
System.out.print(min);
int max = array[0];
for(int i=1;i<n;i++) {
if(array[i]>max) max=array[i];
}
System.out.print(" " + max);
}
}
//min을 array[0]으로 설정 - array[1]과 비교해서 작으면 바꾸고 아니면 냅둠
- 문제 보고 순간 어떻게 풀지? 하고 고민하다가 처음에는 max에 뭔가를 대입하지 않은 상태로 array[i]와 array[ii+1]을 비교해서 더 작은걸 min에 넣고 다음 비교를 진행하는 식으로 하려고 했는데 그 뒤로 어떻게 해야할지 잘 떠오르지 않았다
- 그래서 고민을 더 하다가 'min을 array[0]으로 설정 - array[1]과 비교해서 작으면 바꾸고 아니면 냅두자' 가 떠올라서 그렇게 했더니 성공 !

백준 솔브드 페이지에서 볼 수 있는 스트릭.. 뭔지 잘 몰랐는데 하루라도 안풀면 스트릭이 이어지지 않는거였다
최대한 매일 풀어서 많이 이어봐야겠다
10813

배열에서 값을 서로 바꿀 땐 그 과정에서 잠시 값을 보관할 제3의 변수를 만들어서 풀면 되는걸 수업시간에 배운게 생각나서, 처음에 코드를 이렇게 작성했더니 값이 답과 다르게 출력되었다. 컴파일에러는 아닌데 정답과 다를때는 경험상 예시를 하나들어 그 예시로 코드를 순서대로 따라가면서 어디가 틀렸는지를 찾는게 가장 나은 방법이었던 것 같아서 사진 속의 입력값대로 해보았다
그랬더니 25줄에 k-1번째 배열 칸에 i-1번째 배열의 값을 넣어야하는데 좌변 우변 위치가 바뀌었음을 알 수 있었다
그걸 알고 보니 24줄과 26줄이 동일한 코드였던,,; 쓰면서 간단히 설계하지 않고 머리로만 하다가 이런 실수가 난 것 같다

그 부분을 고치니 정답이 나왔다 !
근데 백준에서 내가 제출한 코드는 240ms 가 걸렸던데 다른 사람들거를 보니까 76ms부터 있었다 ㅠ ㅠ
어떻게 해야 시간을 줄일 수 있는지 모르겠다
그래서 서치를 좀 해봤는데 지금까지는 내가 쓴거랑 같은 코드만 보인다..맞은건 좋지만 시간줄이는 법이 궁금하다
'언어 공부 내용 정리 > 백준' 카테고리의 다른 글
백준 자바 2884, 1152 / split() , StringTokenizer() 비교 (0) | 2023.06.09 |
---|---|
백준 자바 문자열 : 27866, 9086, 11654, 10809 (0) | 2023.06.05 |
백준 자바 10952,10951 (0) | 2023.05.24 |
백준 자바 10172 (0) | 2023.05.18 |
백준 자바 1008번 (0) | 2023.05.18 |