230618 WIL

조재형·2023년 6월 18일
0

이번주는 알고리즘 문제에 집중했다.

나는 처음에 알고리즘 문제를 풀 때, 처음엔 좀 무식하게 해서 머리가 너무 아팠다.

예를 들어 아파트의 특정 호수에 사는 사람의 인원을 구하는 문제에서는,
문제에는 아랫층 사람을 다 더하거나 또는 다른 규칙 등등이 있었는데
나는 이 문제를 규칙을 찾는(공통점을 찾는 즉, 객체 지향 프로그래밍을 의도하는 형식을 따르지 않아 매우 어렵게 느껴질 수 밖에 없었다.
문제의 규칙을 찾으면 간단히 두 줄의 코드로 끝낼 수 있는 문제를
나는 아파트 전체의 배열을 만들어 반복문으로 모든 아파트의 모든 방에다가 값을 집어넣은 후에 그 방을 호출해서 값을 뽑아내는 방법을 사용하려 했기 때문이다.
출제자의 의도와는 전혀 다른 방법을 썼기에 시간도 매우 오래 걸렸고 코드도 길어졌으며 작동 시간도 오래걸렸다.

이후 객체 지향 프로그래밍에대해 자세히 배울수록 내가 무엇을 잘못했는지 알 수 있었다.
일단 먼저 추상화와 캡슐화를 진행했고
이렇게 추출해낸 것들을 상속해서 불러와 코드가 짧아지게 할 수 있었다.


자바의 JVM(Java Virtual Machine)

자바 가상머신 JVM은 자바 실행환경을 만들어 주는 소프트웨어이다.
자바 코드를 컴파일하여 .class 바이트 코드로 만들면 이 코드가 자바 가상 머신 환경에서 실행된다. JVM은 자바 실행 환경 JRE(Java Runtime Environment)에 포함되어 있다.
현재 사용하는 컴퓨터의 운영체제에 맞는 자바 실행환경(JRE)가 설치되어 있다면 자바 가상 머신이 설치되어 있다는 뜻이다.

JVM을 사용함으로서 얻는 가장 큰 이점은 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작할 수 있게 만들 수 있다는 것이다.
즉. Java는 플랫폼에 의존적이지 않다. 하지만 JVM은 플랫폼에 의존적이다.
리눅스의 JVM과 윈도우의 JVM이 서로 다르기 때문.
하지만 JVM만 운영체제에 맞는 것이 설치되어 있다면 Java로 어디서든 프로그램을 실행할 수 있다.
그래서 대부분의 플랫폼에선 JVM을 손쉽게 설치하도록 지원하고 있다.


이번주에 느낀 점들은 기본문법을 다시 숙달하면서, 내 자신감을 어느정도 회복했다는 것이 가장 크다.
나의 멘토에게 끝까지 버티면 결국 이긴다는 것을 배웠다.
같이 배우는 사람들은 지금은 나보다 나아가지만 따라잡히는 순간도 있고, 반대로 내가 지금은 다른사람보다 앞서 나가는 것이 있더라고 반드시 따라잡히는 경우도 생긴다고 한다.
이때 좌절하지 않고 끝까지 버티며 완주하는 것이 중요하다고 한다.

버텨서 꼭 완주하도록 다짐을 해 본다.

profile
안녕하세요.

0개의 댓글