본문 바로가기

공부/TIL

23.10.19

오늘의 알고리즘 문제는 백준(13241)번 [최소공배수 구하기], 백준(11004)[k번째수]

아직 실버 5단계의 벽이 버거움.. 구현을 번번히 실패했다.

최소공배수 구하기를 공부하면서 유클리드 호제법을 알았다. 유클리드 호제법은 최대공약수를 구하는 알고리즘!

방식은 a,b의 최대공약수는 두값을 나눈 나머지값을 r이라고 하자 (a>b). 그리고 나머지값 r과 작은수 a를 다시 나눈 후 나머지를 구한다. 이 연산을 반복하다가 r=0이 된 순간의 a값이 최대공약수이다.

while(r!=0){

a%b = r;

a=r;

b=a;

}

return a;

과같이 함수를 구현해주면 된다. 그 후 최대공배수는 최대공약수 * 두수의 곱이다.

백준(11004)번은 사실 시간이 너무 오래 걸려 풀지 못함..

 

오늘 개인 자바 과제를 하면서 배운 것.

객체 지향 프로그래밍이 뭔지 이제야 알 것 같다. 키오스크를 만들 때 상품 클래스와, 컨트롤 클래스, 화면 출력 클래스들을 모두 나누어서 클래스를 작성한 후, 가장 많이 쓰이는 메서드와 필드값들을 부모 클래스를 만들어줬다. 그 후 자식클래스들은 자신의 방식에 맞게 오버라이딩해서 사용했음! 

어제까지는 사실 그냥 기본 출력문만 만들어놓고, 클래스간의 관계성과 어떻게 작동하는지 막막했는데 오늘 하다보니까 감이 잡혔다. 지금어려운 것은 조건문의 갯수를 리스트 배열의 크기만큼만 돌리고 싶은데 그걸 어떻게 해야될지 모르겠다. 또 Map 자료구조를 사용하고 싶은데 아직 사용법이 낯설다.. main메서드가 아닌 클래스에서 map자료구조를 인자를 받는 메서드를 구현하는데 있어서 어려움이 있었다.

'공부 > TIL' 카테고리의 다른 글

23.10.23  (1) 2023.10.23
23.10.20  (0) 2023.10.20
23.10.18  (0) 2023.10.18
23.10.17  (1) 2023.10.17
23.10.14(2)  (3) 2023.10.14