Java 9

파이썬 알고리즘 공부,,,

소프트웨어학부를 복수전공 시작하고, 이제 세번째 학기입니다. 사실 첫학기는 컴퓨터구조, 이산수학 과목만 수강했기 때문에 두번째 학기라고 봐도 무방합니다;; 지금까지 여러가지를 건들여보았고 알아보았지만, 제대로 공부했다?고 생각한 것은 JAVA 기반의 스프링 프레임워크를 이용한 백엔드입니다. 사실 이마저도 그냥저냥 공부한 것이고, 사실 "이 길이 내 길이다!" 라고 생각하고 체계적으로 계획을 가지고 전력질주한 분야는 또 아닙니다. 최근에는 데이터 분석과 딥러닝 분야에 대해서도 눈독을 들이고 있고, 대학원도 생각이 있기 때문에 둘러보고 싶은 생각이 있지만 마음이 조금은 조급한 것 같습니다. 백엔드를 공부한 계기는 개발자라고 하믄 여러가지 분야가 있겠지만 , 어쩌면 딱딱하게 느껴지는 시스템 프로그래밍 분야는 ..

파이썬 2024.03.05

스프링 기초 - 스프링 컨테이너

이전 시간에 ApplicationContext를 통해 스프링 컨테이너를 만들어 보았습니다. 다시 정리해 보자면 ApplicationContext는 인터페이스이고 XML 기반의 설정 클래스와 , 자바 기반의 설정 클래스를 만들 수 있다고 했습니다. 그 중 JAVA기반의 AnnotationCofigApplicationContext를 사용하였고 이는 ApplicationContext 인터페이스의 구현체입니다. 스프링 컨테이너는 `new AnnotationConfigApplicationContext(AppConfig.class)`를 통해서 생성됩니다. 스프링 컨테이너를 생성 할 때는 구성 정보를 지정해줘야하는데 위 코드에서 보면 알 수 있듯 AppConfig.class로 설정 그러면 스프링 컨테이너는 파라미터로..

스프링 2024.02.14

스프링 기본원리 - 객체지향 원리 적용

이번에는 기존에 작성한 '정액 할인 정책'에서 -> '정률 할인 정책'을 적용하기 위해 '정률 할인 정책' 구현체를 작성하고, 지금까지 작성된 코드 중 SOLID 원칙에 위배되는 점을 찾아 고쳐보겠습니다. DiscountPolicy라는 인터페이스에 '정액 할인 정책' / '정률 할인 정책' 구현체를 만들어 놓고 적용되는 정책에 따라 조립하듯 끼워넣기만 하면 됩니다. RateDiscountPolicy discountPercent라는 할인율은 10%으로 정해두고 DiscountPolicy 인터페이스에서 선언한 메서드인 discount를 재정의하기 위해 Overide 어노테이션을 붙입니다. 이 역시도 VIP인 경우 10%할인 그 외 BASIC인 경우 할인 적용 X를 하기 위해 IF문을 작성해주고 discoun..

스프링 2024.02.13

스프링 기본원리 - SOLID 원칙 /주문과 할인 도메인 설계

지난 시간에는 회원 / 회원 서비스에 대한 도메인 설계 및 구현을 스프링 기능을 제외하고 순수 자바코드로 진행했었는데, 이렇게 짠 코드에는 어떤 문제가 있는지 살펴보겠습니다. 어떠한 문제가 있는지 알아보기 위해서는 객체지향 SOLID 원칙에 대해서 먼저 알아봐야합니다. SOLID는 객체지향 프로그래밍에서 다섯 가지 설계 원칙을 나타냅니다. 이 원칙은 소프트웨어 설계의 유지보수성, 확장성, 가독성, 재사용성 등을 향상시키는데 목적을 두고 있습니다. 1. 단일 책임 원칙(SRP) - 클래스는 하나의 책임만 가져야 한다. 2.개방/폐쇄 원칙(OCP) - 소프트웨어 엔티티는 확장에는 열려있고, 변경에는 닫혀있어야 한다. -새로운 기능을 추가할 때 기존의 코드를 변경하지 않고 확장할 수 있어야 한다. 여기서 보면..

스프링 2024.02.12

백준 1157번 '단어 공부' (JAVA 11)

백준 1157번 문제인 '단어 공부' 문제입니다. '알파벳 대소문자로 된 단어를 입력받고, 입력한 단어에 사용된 알파벳 중 대소문자 관계없이 가장 많이 사용된 알파벳을 찾아 대문자로 출력하는 문제입니다. 문제를 풀기에 앞서, 풀이 과정을 대략적으로 생각해봅니다. 먼저 대소문자와 관계없이, 사용된 알파벳을 카운트 해야하는 문제이므로, 입력받은 모든 문자열을 대문자 또는 소문자로 변환하는 과정이 필요합니다. 대문자 또는 소문자로 변환한 후, 문자열을 순회하며 사용된 알파벳의 개수를 배열에 저장하고 가장 많이 카운트된 알파벳을 대문자로 출력합니다. 만약 가장 많이 카운트도니 알파벳이 2개 이상이라면 문자열 '?'을 출력합니다. 이제 자세한 과정으로 들어가보겠습니다. import java.util.Scanner..

백준 2024.01.03

백준 1152번 '단어의 개수' (JAVA 11)

백준 1152번인 '단어의 개수'를 나타내는 문제입니다. 단어 개수는 공백을 기준으로 나뉘며, 공백의 개수를 구하여 출력하는 형식으로 풀이를 했습니다. import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner scan = new Scanner(System.in); String w=scan.nextLine().trim(); int count=1; // 공백 if(w.isEmpty()){ System.out.println("0"); } else{ for(int i=0; i

백준 2024.01.03

백준 1008번 A/B (JAVA11)

백준 1008번 문제인 A/B입니다. 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. 조건 첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이다. import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner scan = new Scanner(System.in); int a = scan.nextInt(); int b = scan.nextInt(); double div= (double) a / b; System.out.println(div); } } 먼저 A와 B를 int형으로 선언하고 Scanner 클래스를 사용하여 입력..

백준 2024.01.03