프로그래머스에 있던 작은 실습 문제를 내가 아는 것을 총 동원해서 풀어보았다.

쉬운 문제지만 그 문제를 처음 접했을 당시에는 문제에서 요구하는 숫자의 범위같은 조건을 맞추지도 못했고

코드의 수준도 겨우 문제를 통과할 수준만 어거지로 맞췄을 뿐 구멍이 많았었다.

 

물론 지금 내가 제대로 잘 알지도 못한채로 그냥 배운것들 생각나는대로 해봤는데 실행은 제대로 되긴 하지만 이게 얼마만큼 완성도가 높은지는 잘 모르겠음.

 

문제를 풀면서 느낀 점

1) 실제로 내가 코드를 작성하기 위해선 문제를 해결할 아이디어(이런걸 알고리즘이라고 하나?)부터 빨리 완성해야 한다.

이게 제일 중요한 것 같다. 이것만 잘 할 수 있으면 코드 작성하는건 그냥 기술의 숙련도 문제라 어찌됐건 해결하는게 시간문제가 된다.

 

2. 이 아이디어를 실현시켜줄 코드를 되도록 빠르게 작성할 줄 알아야 한다.(숙련도를 올려야 한다)

 

3. 작성하면서 생길 수 있는 오류들을 어떻게 처리할 것인지(얼마나 코드를 안정화 시킬 수 있는지)도 생각보다 중요한듯 싶다. 특히 나는 지금 초보단계라 코드 이곳저곳에 런타임 오류가 많을 수 밖에 없는 것 같다.

 


import javax.swing.JOptionPane;

public class Quiz {	// 1부터 3000 사이의 자연수를 입력했을 때, 그 수의 약수를 모두 더해주는 프로그램 만들기
	
	public static int solution(int n) { // n을 받아서 n의 약수를 모두 더해주는 메소드
		int answer=0;
	    
		for (int i=1; i<=n; i++) {
			if (n%i == 0) {
				answer = answer + i;
				}
			}
		return answer;
		}
	    
	public static void main(String[] args)  {
		
		A:while(true) { // catch문에서 다시 돌아오기 위해 이중반복문을 썼음
		try {
		while(true) { // 무한 반복문을 사용해서, 프로그램을 켰을 때 계속 끄지 않고 쓸 수 있도록 했음
			String a = JOptionPane.showInputDialog("1과 3000 사이의 자연수를 입력하세요.");
			if (a==null) {	// cancel 버튼을 누르면 프로그램이 종료되도록 했음
				break A;
			}
			int input = Integer.parseInt(a);
			if (input<=0 || input>3000) {
				System.out.println("잘못된 수를 입력하셨습니다. 다시 입력하세요.");
				continue;	// 범위 밖의 숫자를 입력하면 다시 숫자를 입력받도록 했음
				}
			System.out.println(input+"의 약수의 총 합은 "+ Quiz.solution(input) +"입니다."); // 결과 출력
			}
		} catch (NumberFormatException e) {
			System.out.println("1과 3000 사이의 자연수를 입력하세요."); 
			continue; // 숫자외 기호나 문자열이 들어가면 다시 숫자를 입력받도록 하였음
			}
		}	System.out.println("프로그램을 종료합니다.");
		}
	}

 

진짜 작은 문제 같은데 이거 하나 작성하고 오류랑 예외 잡으려고 이곳 저곳 고쳐보는데 이렇게 시간이 많이 들어갈 줄 몰랐다.

 

갈 길이 멀다는 것을 다시 느꼈음

 

'간단 실습' 카테고리의 다른 글

220317 Java - 토이 프로그램  (0) 2022.03.18
220311 Java - Chapter 7 실습  (0) 2022.03.12

+ Recent posts