본문 바로가기

전체 글

[백준] 3190번: 뱀 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 이번 문제는 간단한 로직 구현 정도였습니다. 로직이 다른 문제에 비해서는 조금은 난이도 있었다고 생각합니다. 삼성 A형 문제들이 기본 알고리즘도 중요하지만 구현에 초점을 두고 있다는 생각이 듭니다. (3시간 2문제여서 그런가 싶네요) from collections import deque n = int(input()) arr = [[0 for i in range(n)]for j in range(n)] ap.. 더보기
[백준] 13460: 구슬 탈출 2 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 이번 문제는 bfs로 풀었습니다. 구현 자체가 이전 문제들보다는 난이도 있어서 구현에 시간을 생각보다 많이 사용하였습니다. 사실 원래 dfs를 연습할 생각으로 문제를 보고 dfs로 풀어야지 라는 강박에 잡혀 시간을 허비하다가 다른 사람들의 코드를 참고하여 풀게 되었습니다. 그렇기에 주석을 이번엔 자세히 많이 첨부하면서 소스 코드를 되뇌이게 되었습니.. 더보기
[Java] DTO, VO, Entity 란? 개발을 하다보면 UserDB를 갖고도 여러가지 비즈니스 로직을 실행할 때가 많습니다. (ex : 로그인, 회원가입, 회원이 갖고 있는 포인트 조회, 변경 등등) 우선 개념을 먼저 설명드리면 - DTO 계층간의 데이터 교환을 목적으로 한 객체(자바 빈) 입니다. 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만 갖습니다. - VO DTO와 혼용되어 동일하게 사용이 되기도 하지만, DTO와의 차이점으로는 불변의 객체로 특정한 값을 나타내는 객체 입니다. 로직을 포함할 수 있습니다.(getter만 존재) - Entity Entity 클래스는 실제 DB의 테이블과 1:1로 매핑 되는 클래스입니다. - Entity를 DTO대신 사용한다면? View에서 표현하는 속성 값들의 요청이 .. 더보기
[베네픽처 홈페이지] Controller, Repository 분리 베네픽처의 컨트롤러를 보면 좋은 객체지향 설계를 한 프로그램이라고 할 수 없는 부분이 있습니다. 자세히.. 아니 금방 찾으실 수 있는 큰 오류는 바로 Controller에서 Repository를 직접 사용하고 있다는 점입니다. 물론 처음 스프링으로 만들어보고 만들어보면서 고치자라는 생각으로 만든 프로젝트이지만.. 이런 부분을 놓친다는 것이 글로만 배운 내용을 직접 코딩해보는 것이 이렇게 중요하다는 것을 다시 한번 느꼈습니다..(백문이불여일타) - Controller에서 Repository를 직접 호출하면 안되는 이유 많은 이유가 있겠지만, 1. 중복되는 코드가 생깁니다. MyBatis를 적용하면서 깨닫게 된 이유입니다. 기존 JDBC Template에서 MyBatis를 적용하면서 중복되는 코드들을 그대로.. 더보기
[Java] 자바 static, final , static final 차이 오늘 MyBatis를 적용하면서 static관련 에러 메세지를 보게 되었습니다. 기초적인 에러라고 생각하고 고쳐야지 하면서 생각을 하는데... 에러를 고치는데 많은 시간을 쓰게 되고 한번 정리를 해야겠다 생각하게 되었습니다. - static 이란? 정적, 고정된의 의미를 갖고 있습니다. static 키워드를 사용하여 변수, 메소드를 만들 수 있습니다. 이들을 정적 변수, 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버 혹은 클래스 멤버라고도 합니다. 말 그대로 static 변수와 메소드는 객체(인스턴스)에 소속된 멤버가 아닌 클래스에 고정된 멤버입니다. (클래스로더가 클래스를 로딩해서 초기화할 때 함께 초기화됩니다.) - static 멤버 생성 이전의 자바 컴파일 과정을 설명한 글을 쓰면서 나온 개념으로.. 더보기
[베네픽처 홈페이지] MyBatis 적용 이전까지는 JDBC Template를 적용하여 로그인, 공지사항, 광고를 관리하였습니다. 이번에는 MyBatis를 적용하여 DB에 접근해보려합니다. MyBatis 란 MyBatis는 자바 객체와 SQL 사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping)프레임워크 입니다. - 특징 1. 쉬운 접근성과 코드의 간결합니다. JDBC Template와 같이 JDBC 드라이버 로드, Connection, Statement 객체 생성 등등 복잡한 JDBC코드들을 자동으로 처리해주어 깔끔한 소스코드를 유지할 수 있습니다. 2. SQL문과 프로그래밍 코드를 분리하여 복잡한 쿼리나 다이나믹한 쿼리에 강합니다. xml파일로 따로 Mapper를 분리하여 다이나믹한 쿼리나 복잡한 쿼리를 .. 더보기
[Spring] 객체지향 설계와 스프링 (SOLID) - 스프링과 객체지향의 관계 1. 스프링은 자바 언어 기반의 프레임워크입니다. 자바 언어의 가장 큰 특징은 "객체 지향 언어"입니다. 2. 스프링은 객체 지향 언어가 가진 강력한 특징을 잘 살려내는 프레임워크입니다. 3. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다. 그렇다면..... - 좋은 객체지향 프로그래밍이란? 객체 지향의 가장 큰 특징은 "다형성" 입니다. 다형성을 구현하기 위해 추상화, 캡슐화, 상속 등 다양한 개념들이 함께 합니다. - 다형성(Polymorphism) : 유연하고 변경이 용이하게 합니다. 레고 블럭을 조립하듯이, 컴퓨터의 키보드, 마우스를 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법입니다. 즉, 역할과 구현으로 세.. 더보기
[지식] 프로세스, 스레드 (process, thread) 프로세스 : 프로그램을 메모리 상에서 실행 중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 위 그림처럼 프로세스는 각각 별도의 주소공간을 할당 받습니다. (독립적) - Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령) - Data : 전역변수, 정적변수, 배열 등 => 초기화 된 데이터는 data 영역에 저장, 초기화 되지 않은 데이터는 bss 영역에 저장 - Heap : 동적 할당 시 사용 [new(), malloc() 등] - Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역, 스레드마다 존재) * 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유합니다. * 기본적으로 프로세스마다 최소 1개의 스레드 소유 합니다. (메인 스레드 포함) (프로세스.. 더보기