everyday com-eat
작성일
2022. 11. 16. 10:57
작성자
갱수터
728x90

1. 코드를 쓴 상황

 

 

2.내 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

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(), " ");
		br.close();
        
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
		List<Integer> inputList = new ArrayList<>();
		
		for(int i=1; i<N+1; i++) {inputList.add(i);}
		
		N = K;		//변수 N을 inputList의 인덱스로 사용
        bw.write("<");
		while(true) {
			N--;	//인덱스는 0번에서 시작하기 때문에 -1
			bw.write(String.valueOf(inputList.get(N)));
			inputList.remove(N);

			if(inputList.size() < 1) break;	//", " 처리 및 오류 잡기
			else bw.write(", ");

			N += K;	//K값은 고정, N을 동적 변수로
			if(N > inputList.size()) N %= inputList.size();	
            //N의 값이 list의 사이즈보다 커질 때 사이즈로 나눈 나머지값으로 인덱스 설정
			if(N == 0) N = inputList.size();
            //N이 0일 때는 나머지 값없이 딱 떨어지기 때문에 가장 마지막 요소 선택
		}
		bw.write(">");
		
		bw.flush();
		bw.close();
	}
}

 

 

3. 남의 코드에서 본받을 점

중간에 조건 주다가 계속 오류가 나서 반례 볼려고 다른 사람들이 제출한 코드를 봤는데 다들 Queue(큐)를 사용해서 풀었더라...
알고리즘 분류 "구현"으로 문제 찾아서 푼건데 문제 아래 보니 큐로 되어있음...;;
다음에는 큐로 풀어봐야지... 일단 java collection 공부 좀 다시 해야겠다..