많은 분들이 주로 질문 게시판에 글을 남겨주셔서 그 곳은 종종 확인하는데 고민있어요 게시판에 글이 남겨져 있는지를 몰랐어요. 제 불찰이며 진심으로 사과 드립니다. 늦게라도 제 답변이 도움될 수 있기를 바라겠습니다.
문제 파악이 어렵지 않고 로직을 짜실 수 있으시다면 지금처럼 공부하시면 됩니다. 물론 난이도를 높여가면서, 그리고 알고리즘 문제의 카테고리별를 다르게 하면서 다양한 형태의 문제에 익숙해질 수 있도록 하는 것이 좋습니다. 해결된 문제에 대해서는 보다 랭킹이 높은 다른 분들의 풀이를 참고하면서 개선할 점은 없는지에 대해 스스로 회고를 해보는 것도 좋지요.
알고리즘의 입력값을 받기 위한 코드는 입력값의 형태에 따라 달라질 수 있지만 한 가지 방법을 습관으로 들여놓으시면 편리합니다. 지금 단계에서는 Scanner 하나만 사용하셔도 될 것 같아요. 나중에 입력값이 많아져서 성능 개선이 필요해지면 BufferedReader 로 넘어가구요. 알고리즘 테스트는 문제 해결 능력이 중요하므로, 다양한 방법으로 시도해볼 수 있는 입력값을 처리하느라 시간을 쓰지는 않는 것이 어떨까 합니다.
가령 다음과 같은 입력값이 있다고 해 볼게요.
(입력 예)
3 : 테스트 케이스의 수(3개)
3 : 첫 번째 테스트 케이스 시작 (3개 값 입력)
1 2 3
7 : 두 번째 테스트 케이스 시작 (7개 값 입력)
11 22 33 44 55 66 77
5 : 세 번째 테스트 케이스 시작 (5개 값 입력)
111 222 333 444 555
public class Algorithm {
public static int T; // 테스트 케이스의 수
public static int N; // 특정 테스트 케이스의 입력값 수
public static int Input[]; // 입력 데이터 저장 배열
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 테스트 케이스의 수
T = sc.nextInt();
// 각 테스트 케이스의 입력
for (int testCase = 1; testCase <= T; testCase++) {
N = sc.nextInt(); // 특정 테스트 케이스 시작 (N개 값 입력)
Input = new int[N]; // 값 수만큼 배열 생성
for (int i = 0; i < N; i++) { // N개 값 각각 입력받기
Input[i] = sc.nextInt();
}
// 알고리즘 로직 ...
// 입력값 확인해보기
System.out.println(Arrays.toString(Input));
}
}
}
이 경우는 N 에 따른 입력값이 유동적이지만 고정된 경우도 있습니다. 중요한 점은 많은 문제의 입력값은 크게 다르지 않은 형태이므로 Scanner 와 nextInt(), next() 정도로 대부분 해소가 가능할 것입니다. 가급적 간단하게 입력값을 처리할 수 있는 형태를 기억(또는 기록)해두셨다가 응용하는 식으로 공부하시는 것이 좋겠습니다. 2차원 배열이 필요한 경우도 종종 있으므로 문제의 입력값 예시에 따른 값 입력 받는 코드를 샘플로 몇 개 만들어두시면 분명 도움이 될거에요!
정리하면, 값 입력을 위한 여러 가지 방법이 있겠지만 보다 간단하고 쉬운 방법, 또는 본인에게 익숙한 방법을 주로 사용하실 수 있도록 샘플을 몇 개 마련해두시면 알고리즘 문제 해결에 더 집중할 수 있을 것이라 생각합니다.
다시 한 번 답변이 늦어진 점 사과드리며, 알고리즘 공부에 작게나마 도움되길 바라겠습니다 😊 감사합니다.
안녕하세요?
유럽불곰님!
먼저 답변이 늦어져서 정말 정말 죄송합니다 😰
많은 분들이 주로 질문 게시판에 글을 남겨주셔서 그 곳은 종종 확인하는데 고민있어요 게시판에 글이 남겨져 있는지를 몰랐어요. 제 불찰이며 진심으로 사과 드립니다. 늦게라도 제 답변이 도움될 수 있기를 바라겠습니다.
문제 파악이 어렵지 않고 로직을 짜실 수 있으시다면 지금처럼 공부하시면 됩니다. 물론 난이도를 높여가면서, 그리고 알고리즘 문제의 카테고리별를 다르게 하면서 다양한 형태의 문제에 익숙해질 수 있도록 하는 것이 좋습니다. 해결된 문제에 대해서는 보다 랭킹이 높은 다른 분들의 풀이를 참고하면서 개선할 점은 없는지에 대해 스스로 회고를 해보는 것도 좋지요.
알고리즘의 입력값을 받기 위한 코드는 입력값의 형태에 따라 달라질 수 있지만 한 가지 방법을 습관으로 들여놓으시면 편리합니다. 지금 단계에서는 Scanner 하나만 사용하셔도 될 것 같아요. 나중에 입력값이 많아져서 성능 개선이 필요해지면 BufferedReader 로 넘어가구요. 알고리즘 테스트는 문제 해결 능력이 중요하므로, 다양한 방법으로 시도해볼 수 있는 입력값을 처리하느라 시간을 쓰지는 않는 것이 어떨까 합니다.
가령 다음과 같은 입력값이 있다고 해 볼게요.
(입력 예)
(코드 실행 시 사용할 수 있는 실제 입력값)
이런 입력값을 받기 위해서는 다음과 같이 코드를 작성하실 수 있습니다.
이 경우는 N 에 따른 입력값이 유동적이지만 고정된 경우도 있습니다. 중요한 점은 많은 문제의 입력값은 크게 다르지 않은 형태이므로 Scanner 와 nextInt(), next() 정도로 대부분 해소가 가능할 것입니다. 가급적 간단하게 입력값을 처리할 수 있는 형태를 기억(또는 기록)해두셨다가 응용하는 식으로 공부하시는 것이 좋겠습니다. 2차원 배열이 필요한 경우도 종종 있으므로 문제의 입력값 예시에 따른 값 입력 받는 코드를 샘플로 몇 개 만들어두시면 분명 도움이 될거에요!
정리하면, 값 입력을 위한 여러 가지 방법이 있겠지만 보다 간단하고 쉬운 방법, 또는 본인에게 익숙한 방법을 주로 사용하실 수 있도록 샘플을 몇 개 마련해두시면 알고리즘 문제 해결에 더 집중할 수 있을 것이라 생각합니다.
다시 한 번 답변이 늦어진 점 사과드리며, 알고리즘 공부에 작게나마 도움되길 바라겠습니다 😊
감사합니다.
답글
갈색곰
2023.09.01안녕하세요 선생님 항상 상세하고 친절한 답변 정말 감사드립니다 :)
선생님께서 조언해주신대로, 입력값 만드는 시간을 줄이고, 미리 샘플들을 만들어서 익숙해지기 전까지는 샘플을 사용하고 문제 푸는 부분을 더 집중적으로 하도록 하겠습니다.
날씨가 많이 추워졌는데 환절기 감기 조심하시고 행복한 하루 가득하시길 바랍니다 감사합니다 !! ㅎㅎ