본문 바로가기

장생농

(140)
프로그래머스 메뉴 리뉴얼 2021 카카오 문제 + 삽질과 유용한 라이브러리 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제: 단품 메뉴들로 코스요리를 만들 건데, 손님이 같이 주문하는 메뉴들로 조합을 해서 만든다. 코스 요리를 구성하는 메뉴의 개수는 정해져 있다. 예를 들어 단품 메뉴 3개로 구성된 코스 요리를 만든다면, 3개 이상 주문한 조합에서 가장 많이 주문된 조합을 코스 요리로 만든다. 주문 횟수가 같다면 둘 다 추가한다.(자세한 규칙, 설명은 사이트에서) 많이 어려운 문제는 아니었지만, 좋은 메소드, 라이브러리를 몰라 삽질을 했다. 문제 풀이 요약 1. 조합되야 하는 메..
자바/JAVA static, final, static final static, final, static final의 특성이 헷갈려서 적는 글. static : 클래스 멤버(정적 멤버)를 선언할 때 사용하는 키워드. final : 상수나 메소드,클래스를 정의한 뒤 변경하지 못하게 할 때 사용한다. 변수에 붙이면 상수를 만든다 메소드에 사용하면 재정의할 수 없다. 클래스에 붙이면 상속할 수 없다. static final : static + final의 특성을 갖는다. 변수에 붙이면 정적 상수. 메소드에 붙이면 정적 메소드를 만든다.
파이썬 for문과 리스트 원소 제거 주의 파이썬에서 for문과 함께 리스트의 원소를 제거할 때 문제가 발생한다. a = [1,2,3,4,5,6,7,8,9] for num in a: if num%2 == 0: a.remove(num) 다음 코드를 실행하면 a = [1,3,5,7,9]가 나온다. 이상 없어보이지만 실은 코드가 실행될 때 for문은 9번이 아닌 5번만 실행된다. 첫번째 실행하면 num은 1이기 때문에 삭제가 일어나지 않는다. 두번째부터 문제가 발생한다. num은 짝수이기 때문에 if문이 작동한다. 그러면 a = [1,3,4,5,6,7,8,9] 가 된다. 세번째 for문이 실행될 때, num은 3이 아니라 4가 된다. for문이 세번째 실행되면서 리스트의 3번째 요소를 가져온다. 그래서 공교롭게도 나머지 for문이 실행되면서 짝수만 접..
JSP JSP : Java Server Page. html 코드와 자바 코드를 합쳐 동적인 페이지를 제공해준다. 모든 JSP 파일은 JSP 파일 자체를 작동시키는 것이 아니라 톰캣(WAS)이 서블릿으로 바꿔서 동작한다. 예를 들어 test.jsp 라는 jsp 파일을 실행시키면 톰캣이 test_jsp.java 서블릿으로 바꾸고 이 서블릿을 실행시킨다. 서블릿 글 jang-sn.tistory.com/49 JSP의 실행 순서 클라이언트가 웹서버에 jsp에 대한 요청을 보낸다. 웹서버는 해당 jsp에 대한 요청이 최초인지 확인한다. 최초 요청이라면 jsp로 작성된 코드를 서블릿 코드로 변환한다(java 파일 생성) 서블릿 코드를 컴파일한다.(class 파일 생성) 서블릿 클래스를 로딩하고 인스턴스를 생성한다. 서블릿이..
Servlet 스프링 이해를 위해 공부한 내용이라 다소 미흡함. 자바 웹 어플리케이션은 WAS에 설치되어 동작하는 자바 어플리케이션이다. 자바 웹 어플리케이션은 반드시 WEB-INF 폴더가 있어야 한다. 여기에는 web.xml 파일이 있다. web.xml은 배포 기술자다. 서블릿 3.0 미만에선 필수고, 3.0 이상에선 필수가 아니다. WEB-INF 폴더 밑에는 lib 폴더가 있고, 여기엔 각종 jar 파일들이 있다. Servlet은 자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할을 한다. 서블릿은 WAS에서 동작하는 자바의 class다. 서블릿은 HttpServlet 클래스를 상속받는다. 요즘은 서블릿을 직접 작성하지 않고 프레임워크를 사용하지만, 프레임워크 또한 서블릿을 사용하므로 공부해야 ..
210223 TIL 프로그래머스 레벨1 1문제 풂 부스트코스 백엔드 강의 -> 스프링 공부하기 위해서 한바퀴 돌리는 느낌으로. 그래서 따로 정리는 안함. 자바 객체 강의 수강 따로 적기 뭐한 거 메소드의 이름은 클라이언트 코드에 맞춰 명명하는 것이 좋다. 자바에서 함수가 호출되면, 스택 메모리에 올라간다. 메인 메소드가 호출되면 메인 메소드가 스택에 들어가고 그 위에 메인 메소드가 호출한 메소드가 쌓인다. 그리고 메인 메소드에 의해 호출된 메소드의 사용이 끝나면 스택 메모리를 반환한다.
WAS 웹서버는 소프트웨어를 보통 말하지만, 웹서버 소프트웨어가 동작하는 컴퓨터를 말한다. 웹서버의 가장 중요한 기능은 클라이언트가 요청하는 html 문서나 각종 리소스를 전달하는 것이다. 웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적 데이터거나 동적인 결과가 될 수 있다. DBMS - 다수의 사용자들이 db 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 미들웨어 - 클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리로 인해 비용이 많이 발생하는 문제가 발생한다. 비즈니스 로직을 클라이언트와 DBMS 사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 한다. WAS는 일종의 미들웨어로 웹 클라이언트의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하..
자바/JAVA 메모리 사용 영역(Runtime Data Area) 인스턴스: 클래스를 구현한 실체. 힙 메모리에 멤버 변수의 크기에 따라 메모리가 생성된다. 클래스를 기반으로 new 키워드를 이용해 여러 인스턴스를 생성한다. 인스턴스가 생성되면, Heap 메모리에 올라간다. 인스턴스를 참조하는 레퍼런스 변수(참조 변수)는 Stack 메모리에 올라간다. 참조 변수에는 참조 값이 할당된다. 참조 변수 - 메모리에 생성된 인스턴스를 가리키는 변수 참조 값 - 생성된 인스턴스의 메모리 주소 값 JVM은 OS에게 할당받은 메모리 영역(Runtime Data Area)을 메소드, 힙, JVM 스택으로 세부영역으로 나눠 사용한다. 메소드 영역(Method Area) JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역. 사용되는 클래스들을 클래스 로더로 읽어 클래스별로 정적 필..