본문 바로가기

🧑🏻‍💻 Dev

(60)
[Sorfteer] Level 2 문제 풀이 후 정리 (Java) 현대 그룹에서 만든 Soofteer에서 최근 알고리즘 문제를 풀어봤다. 프로그래머스를 주로 풀면서 느꼈던 차이점은 프로그래머스에서는 입력 값을 직접 받지는 않는 반면에 소프티어에서는 직접 입력 값을 받아서 출력하는식으로 문제를 해결해야 한다. 그래서 뭐 하나만 계속 하는것보다는 프로그래머스와 소프티어 둘 다 활용해보면서 입력, 출력 문제도 연습하고, 메서드 파라미터를 활용하여 리턴 값을 가져오는 연습도 해보는 것이 좋다고 느꼈다. 평소에 코드 작성 연습을 IntelliJ IDEA에서 했었는데 자동 완성 기능에 익숙해져서 그런지 소프티어 IDE에서만 코드를 작업하는 것이 조금 힘들게 느껴진 부분도 있었다. 예를 들어 IntelliJ에서는 sout 하고 엔터를 치면 System.out.println이 바로 ..
[Java] 문자열을 자르는 split()과 StringTokenizer 알고리즘 문제를 풀면서 가장 많이 사용되었던 것이 무엇이냐고 물어보면 문자열을 쪼개서 활용하는 문제들이 많았다고 말할 수 있을 거 같다. 상황에 따라서 선택할 수 있도록 String의 split()과 StringTokenizer을 사용하여 문자열을 자르는 예제를 작성해보려고 한다. 일단 split()과 StringTokenizer 둘다 문자열을 특정 구분자(delimiter)을 기준으로 쪼갤 수 있는 기능을 가지고 있다. 사실 이번 글을 정리하게된 계기도 평소에 문자열을 자를 때는 항상 split()을 사용했다. 하지만, 최근데 입력을 받을 때 사용하는 BufferedReader를 사용하며 StringTokenizer에도 관심을 갖게 되었다. 첫 번째로 살펴볼 예제는 "가,나,다,라,마,바,사"를 구분자..
[Java] 입력을 받는 BufferedReader와 Scanner 학교 수업에서 데이터를 입력받을 때, Scanner 객체를 만들어서 사용했었다. 근데 최근 알고리즘 문제를 풀다보니 많은 사람들이 BufferedReader 클래스를 사용하는 것을 발견했다. 둘의 차이점은 뭐가 있는지 알아보고자 한다. 사용하는 방법 Scanner 객체 만들기 Scanner scanner = new Scanner(System.in); 생각보다 Scanner 객체를 만드는 것은 간단하다. System.in을 생성자 파라미터로 넣어서 생성해주면 된다. 이때 Scanner를 사용하기 위해서는 java.util를 import 해줘야 합니다. BufferedReader 객체 만들기 BufferedReader bufferedReader = new BufferedReader(new InputStrea..
[디자인 패턴] 싱글톤 패턴 싱글톤 패턴은 디자인 패턴 중에서 가장 자주 사용되는 패턴이기도 하면서 가장 많은 비판을 받는 패턴이다. 이런 싱글톤 패턴은 매우 조심해서 사용해야 하거나 피해야 할 패턴이라고 말하기도 한다. 스프링 공부를 하면서 싱글톤이라는 패턴 용어를 보게 되었고, 정리해보자는 생각에 작성하게 됩니다. 싱글톤 패턴이란 무엇인가? 객체의 인스턴스가 오직 하나만 존재하도록 강제하는 패턴을 말한다. 이렇게 하나만 만들어지는 클래스의 오브젝트는 애플리케이션 내에서 전역적으로 접근이 가능하다. 단일 오브젝트만 존재해야 하고, 이를 애플리케이션의 여러 곳에서 공유하는 경우에 주로 사용하는 패턴이다. 자바 코드로 확인 자바에서는 싱글톤패턴을 구현하는 방법은 다음과 같다. 클래스 밖에서는 오브젝트를 생성하지 못하도록 생성자를 pr..
[디자인 패턴] 템플릿 메서드 패턴 Java를 공부하다 보니 상속을 통한 확장성에 대한 얘기를 많이 접해볼 수 있었다. 그중에서도 지금 공부하고 있는 스프링 프레임워크에서 많이 사용하고 있는 디자인 패턴인 "템플릿 메서드 패턴"에 대해서 짧게 적어보려고 한다. 먼저 디자인 패턴이란 무엇인가? 소프트웨어 설계를 할 때 자주 만나는 문제들이 존재한다. 반복되는 문제들을 해결할 수 있는 해결방안이 정해져 있으면 좋지 않을까? 그래서 있는 존재하는 것이 디자인 패턴입니다. 즉, 디자인 패턴이란 소프트웨어 설계 시 특정 상황에서 자주 만나게 되는 문제를 해결하기 위해 사용할 수 있는 재사용이 가능한 솔루션을 의미한다. 이제 템플릿 메서드 패턴에 대해서 알아봅시다. 템플릿 메서드의 특징은 다음과 같습니다. 1. 추상 메서드, 구현된 메서드를 이용하여..
[SpringBoot] mysql 연동 후 data.sql 적용하기 직면한 문제 기존에 h2 데이터베이스를 썼을 때, 사용했던 설정에서는 data-h2.sql 파일이 mysql에는 적용되지 않음. MySQL 연동하기 dependencies { implementation 'mysql:mysql-connector-java' } 먼저 mysql에 대한 의존성을 추가해주고, build.gradle을 refresh해서 적용시켜줍니다. 해결 방법 mysql을 이용하기 위한 application.yml 설정을 먼저 해줍니다. spring: datasource: url: jdbc:mysql://localhost:3306/{스키마 이름}?serverTimezone=UTC&characterEncoding=UTF-8 driver-class-name: com.mysql.cj.jdbc.Driv..
[Sorfteer] 인증평가(5차) 기출 - 업무 처리 (Java) [인증평가(5차) 기출] 업무 처리 문제 보러가기 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제는 위 링크에 접속하면 직접 문제를 풀어보실 수 있습니다! 문제 설명 어떤 부서의 업무 조직은 완전이진트리 모양이다. 즉, 부서장이 루트이고 부서장 포함 각 직원은 왼쪽과 오른쪽의 부하 직원을 가진다. 부하 직원이 없는 직원을 말단 직원이라고 부른다. 모든 말단 직원은 부서장까지 올라가는 거리가 동일하다. 조직도 트리의 높이는 H이다. 아래는 높이가 1이고 업무가 3개인 조직도를 보여준다. 업무는 R일 동안 진행된다. 처음에 말단 직원들만 각각 K개의 순서가 정해진 업무를 가지고 있다. 각 업무는 업무 번호가 있다. 각 날짜에 남은 업무가 있는 경우, 말단 직원은 하나..
[자바 자료구조] 스택(Stack)과 큐(Queue) 📘 스택과 큐 (Stack / Queue) 📖 Stack (스택) 스택 자료구조는 마지막에 들어간 데이터가 제일 먼저 나오는 LIFO(Last In First Out) 구조입니다. 자바에서는 스택을 Stack class로 구현하여 제공하고 있어서 아래와 같이 사용할 수 있습니다. Stack stack = new Stack(); 스택 활용의 간단한 예시로는 홈페이지의 뒤로가기, 앞으로가기 버튼의 기능과 같습니다. 초기 상태 (현재 있는 페이지는 "구글") BackStack ["네이버", "다음", "구글"] ForwardStack [] 뒤로가기 버튼을 눌렀을 때 (현재 있는 페이지는 "다음") BackStack ["네이버", "다음"] ForwardStack ["구글"] 뒤로가기 버튼을 다시 한번 눌렀을 ..