본문 바로가기

분류 전체보기153

[일상] 생각 정리 (NSHC 방문) 최근 면접을 준비하면서 한동안 머리가 복잡하고 마음의 여유가 없었다. 곧 졸업을 앞두고 난 어떤 개발자가 되고 싶은지, 컴퓨터공학을 전공하면서 이것저것 해봤다곤 생각하지만 얕은 지식뿐인 것 같았다. 정작 뭘 하고 싶은지가 가장 큰 고민이었다. 혼자 고민하던 중 외삼촌이 일하시는 회사에 초대해주셨다. 회사 구경도 하고.. 잡생각도 좀 덜어내고 싶은 마음에 다음날 바로 출발. 퇴근시간에 맞춰서 방문하느라 지옥철이었다... 처음 가본 가산디지털단지는 회사가 정말 많았다.😅 회사는 6번출구로 나오니 가장 잘 보이는 제이플라츠 건물에 있다. NSHC는 정보보호 전문회사로 많은 기업들이 NSHC의 보안 서비스를 이용하고 있고 나도 금융 서비스를 사용하면서 자주 본 기억이 있다. 회사와 관련된 이야기는 아니지만 들려.. 2022. 1. 14.
[백준] 나는야 포켓몬 마스터 이다솜 1620번 (Python) https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 문제가 길어 링크로 대체합니다. (스토리가 알차다....😅) 풀이방법 입력과 출력만 읽으면 풀 수 있다. 파이썬의 hash자료형은 Dict가 있다. N개의 입력된 포켓몬을 모두 도감 리스트에 넣는다. (이후 key, value로 변환) 도감 번호가 입력되면 포켓몬이름 출력, 포켓몬이름이 입력되면 도감 번호 출력 (isalpha를 사용하여 영문일때와 아닐때를 구분하였다... 2022. 1. 6.
[Java] 컬렉션 프레임 워크 (List 인터페이스, Stack, Queue) 컬렉션 프레임 워크란? 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리이다. java.util 패키지에 구현되어 있다. 개발에 소요된느 시간을 절약하고 최적화된 라이브러리를 사용할 수 있다. Collection 인터페이스와 Map 인터페이스로 구성됨. Collection 인터페이스 하나의 객체 관리를 위해 선언된 인터페이스로 필요한 기본 메서드가 선언되어 있다. 하위에 List, Set 인터페이스가 있다. Map 인터페이스 쌍으로 이루어진 객체를 관리하는데 필요한 여러 메서드가 선언되어 있다. Map을 사용하는 객체는 Key-Value 쌍으로 되어 있고, Key는 중복될 수없다. List 인터페이스 Collection 하위 인터페이스이다. 객체를 순서에 따라 저장하고 관리하는데 필요한.. 2022. 1. 6.
[Java] 제네릭 프로그래밍 제네릭 프로그래밍이란? 변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형으로 변환 될 수 있도록 프로그래밍 하는 방식이다. 실제 사용되는 참조 자료형으로의 변환은 컴파일러가 검증하므로 안정적인 프로그래밍 방식이다. 자료형 매개 변수 T 여러 참조 자료형으로 대체 될 수 있는 부분을 하나의 문자로 표현한것. (Type의 약자 T를 사용) 사용 예) 다른 타입에 대한 프린터(다른 재료 사용) 더보기 클래스 옆에 를 표시해준다. (임시 객체) public class GenericPrinter { private T material; public T getMaterial() { return material; } public void setMaterial(T material) { this... 2022. 1. 6.
[백준] 케빈 베이컨의 6단계 법칙 1389번 (Python) 문제 케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다. 예를 들면, 전혀 상관없을 것 같은 인하대학교의 이강호와 서강대학교의 민세희는 몇 단계만에 이어질 수 있을까? 천민호는 이강호와 같은 학교에 다니는 사이이다. 천민호와 최백준은 Baekjoon Online Judge를 통해 알게 되었다. 최백준과 김선영은 같이 Startlink를 창업했다. 김선영과 김도현은 같은 학교 동아리 소속이다. 김도현과 민세희는 같은 학교에 다니는 사이로 서로 알고 있다. 즉, 이강호-천민호-최백준-김선영-김도현-민세희 와 같이 5단계만 거치면 된다. 케빈 베이.. 2022. 1. 6.
[Java] String 클래스, StringBuilder와 StringBuffer, Wrapper 클래스 String 클래스 선언하기 String str1 = new String("abc");//인스턴스로 생성된다. String str2 = "abc";//상수풀에 있는 문자열을 가리킴 public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2); //결과는 힙메모리에 할당되어 메모리 위치가 다르기 때문에 false String str3 = "abc"; String str4 = "abc"; System.out.println(str3 == str4); //결과는 상수풀에 같은 값.. 2022. 1. 5.
[백준] 연구소 14502번 (Python) 문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자. 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 .. 2022. 1. 1.
[Java] JPA, MySQL연동 (Entity), JPA를 통한 CRUD JPA (Java Persistence API)? ORM(Object Relational Mapping)으로 인터페이스의 모음이다. RDB 데이터베이스의 정보를 객체지향으로 손쉽게 활용할 수 있도록 도와주는 도구이다. Object(객체)와 Relation(관계형 DB) 둘 간의 맵핑을 통해서 보다 손쉽게 적용할 수 있는 기술을 제공해준다. 또한 쿼리에 집중하기 보다는 객체에 집중함으로써, 조금 더 프로그래밍 적으로 많이 활용할 수 있다. MySQL연동하기 mysql.server start 의존성 추가 jpa, mysql dependencies { implementation('org.springframework.boot:spring-boot-starter-data-jpa') implementation('m.. 2021. 12. 31.
[Java] Lombok(롬복)이란? Lombok설치 Lombok(롬복) 이란? Java 라이브러리로 반복되는 getter, setter, toString .. 등의 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리 이다. Lombok은 여러 어노테이션(@)을 제공하고 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리이다. Lombok 장점 어노테이션 기반의 코드 자동생성을 통한 생산성 향상 반복코드 다이어트를 통해 가독성 및 유지보수성 향상 Getter/Setter외 빌더 패턴이나 로그생성 등 다양한 방면으로 활용가능 Lombok 적용 방법 Intellij 기준 Preferences-Plugins-Marketplace lombok 검색 (이미 설치 되어 있을 수 있음) lombok라이브러리를 Gradle에 의존.. 2021. 12. 30.
[Java] Object 클래스 & Class 클래스 - toString(), equals(), hashCode(), clone(), forName() 모든 클래스의 최상위 클래스이다. java.lang.Object 클래스 (따로 import하지 않아도 된다.) 모든 클래스는 Object클래스에서 상속 받는다. 모든 클래스는 Object클래스의 메소드를 사용할 수 있다. 모든 클래스는 Object클래스의 일부 메서드를 재정의 하여 사용할 수 있다. (final로 정의된 메서드가 있기 때문) Object클래스의 toString메서드 toString()메서드의 원형: getClass().getName() + '@' + Integer.toHexString(hashCode()) 객체의 정보를 String으로 바꾸어 사용할 때 유용하다. package Object; class Book{ String title; String author; public Book(S.. 2021. 12. 29.
[백트래킹] N-Queen문제 백트래킹이란? 해를 찾기 위해 DFS방식으로 탐색하다가 해당 루트가 유망한지(Promising) 검사하여 조건이 맞지 않다면 가지치기(Pruning)하고 다른 루트로 돌아가 최적의 해를 찾는 방법이다. 상태 공간 트리(State Space Tree) 문제 해결 과정의 중간 상태를 각각의 노드로 나타낸 트리이다. N-Queen문제 대표적인 백트레킹 문제이다. 백준 9663번 문제: https://www.acmicpc.net/problem/9663 n = int(input()) row = [250] * n answer = 0 #현재 레벨에서 놓을 수 있는지 없는지 체크하는 함수 (행[자동 생략], 열, 대각선) def can(level): for i in range(level): if row[level] =.. 2021. 12. 28.
[Java] 인터페이스, 추상클래스 인터페이스 차이 인터페이스는 객체에 대한 명세이다. (어떤 메소드를 제공할건지, 어떤 역할은 하는 객체인지에 대한 설명서라고 본다.) 인터페이스의 요소 추상메서드: 모든 메서드는 추상메서드이다. 상수: 선언된 모든 변수는 상수로 처리 됨 디폴트 메서드: 기본 구현을 가지는 메서드(재정의 가능) 정적 메서드: 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드 private메서드: 인터페이스 내에서 사용하기 위해 구현한 메서드(재정의 x) 인터페이스 선언과 구현 public interface Calc { double PI = 3.14; int ERROR = -99999999;//인터페이스에서 선언한 변수는 컴파일 과정에서 상수로 변환된다.(public static final) int add(int a, int b.. 2021. 12. 27.