728x90

Java 75

30 삐약 : 백준 10807[바킹독 문제 풀이|배열|JAVA]

https://www.acmicpc.net/problem/10807 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net package BKD_0x2_Array; import java.util.Scanner; public class BOJ_10807 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; for(int i=0;i

29 삐약 : 백준 3237 [바킹독 문제 풀이|배열|투포인터| JAVA]

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 1차 시도 : 시간 초과 package BKD_0x2_Array; import java.util.Scanner; public class BOJ_3273 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[]..

[DP | Dynamic Programming] 카데인 알고리즘 Kadane's Algorithm

배열이 주어졌을때 maximum subarray 를 찾고자 한다. 본인의 경우 배열 내에서 가장 큰 값이 지속되는 구간을 찾아아 시작 인덱스와 종료 인덱스를 추출해야 했다. 시간 복잡도 O(N) 개념 각각의 최대 부분 합은 이전 최대 부분 합이 반영된 결과이다. 이전 인덱스가 가질 수 있는 최대 부분 합에 현재 인덱스 값을 더하면 현재 인덱스가 가질 수 있는 최대 부분 합을 구할 수 있음을 의미한다. 방법 각각의 인덱스 값은 이전 인덱스가 갖고 있는 최대 부분 합을 연장할지 아니면 자신의 값으로 초기화 할지 선택한다. 연장 이전 인덱스의 최대 부분합 + 현재 인덱스의 최대 부분 합 > 현재 인덱스 값 Math.max(A[i],A[i] + A[i-1]) 적용 코드 public AvailableSchedul..

27 삐약 : 백준 10808[바킹독 문제 풀이 | 배열 | JAVA]

https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net package Array; import java.util.*; public class BOJ_10808 { public static void main(String args[]){ Scanner sc = new Scanner(System.in); String s = sc.next(); int[] count = new int[26]; for(char c: s.toCharArray()){ int index = c -97; count[index] +=1; } for(int i:count){ Syst..

[대학교멋사🦁/OOD] 5. 의존과 DI(의존 주입)

1. 의존하다 기능 구현을 위해 다른 구성 요소를 사용하는 것. ex) 객체 생성, 메소드 호출, 데이터 사용 등 의존은 변경이 전파될 가능성이 있음을 의미 내가 의존하는 대상이 변경되면 나도 바뀔 가능성이 존재 == 의존하는 대상이 변경되면 의존받는 대상도 바뀔 가능성이 존재 ex) 호출하는 메소드의 파라미터 변경 ex) 호출하는 메소드가 발생할 수 있는 exception 타입 추가 (예외 처리) 2. 순환 의존 A->B->C->A의 형태로 의존하는 관계. # 문제점 변경 연쇄 전파 가능성 존재. => 왠만하면 클래스, 패키지, 모듈 등의 모든 수준에서 순환의존이 없도록 구현하도록 하자. Q. 의존하는 대상이 많다면? A,B,C,D,E,F를 의존하는 X가 존재한다고 할때 X는 의존하는 애들이 바뀔 때 ..

[대학교멋사🦁/OOD] 4. 기능과 책임 분리

1. 기능 분해 하나의 기능은 여러가지의 하위 기능으로 분해할 수 있다. 기능을 분류하고 각 객체에게 기능 구현의 책임을 제공한다. 분리한 하위 기능을 통해서 전체 기능을 구현하게 됨 2. 문제 클래스나 메소드의 크기가 증가할 경우 절차지향에서 마주하였던 문제가 또 다시 발생 큰 클래스 : 많은 필드를 많은 메소드가 공유 큰 메소드 : 많은 변수를 많은 코드가 공요 여러 기능이 한 클래스 및 메소드에 섞에 있을 가능성이 존재한다. => 데이터를 공유하게 됨으로써 코드를 수정하기 어려움을 겪게 됨 그럼 어떻게 해야 할까? 책임에 따라 알맞게 코드를 분리할 필요가 있다. 3. 책임에 따른 클래스 분배 분리 방법 패턴적용 전형적인 역할 분리 ex) 웹 : 컨트롤러, 서비스, DAO / 복잡한 도메인 : 엔티티..

[대학교멋사🦁/OOD] 1. 객체 | 캡슐화

1. 서론 2. 절차지햔 VS 객체지햔 3. 객체 4. 캡슐화 1. 서론 # 소프트웨어를 유지보수하는 이유 변화하는 세계에서 여전히 유용한 소프트웨어가 되도록 하기 위함이다. ==> 바뀌어가는 환경에 알맞게 소프트웨어 또한 변경되어야 한다. ??? 낮은 비용으로 소프트웨어를 변화시키기 위한 방법에는 어떤 것이 있을까? 객체지향 프로그래밍 = 캡슐화 + 다형성(추상화) 2. 절차 지향 vs 객체 지향 # 절차지향 절차 지향의 장점 코드 구현 시 작성하기 쉽고 시간이 적게 소요됨 절차 지향의 단점 대개 위에서 선언한 data 값을 아래에서 공유하는 방식을 사용 코드의 중복 사용 및 데이터 공유의 현상이 발생 코드 수정의 어려움을 야기 => 비용적으로 좋지 않음. # 객체지향 객체지향의 특징 데이터와 프로시저..

[대학교멋사🦁/JAVA] Assignment_2회차_3

학생의 성적을 관리하는 프로그램인 StudentManager은 인터페이스입니다. 이 인터페이스를 분석하여 Student class와 StudentManager의 구현체를 완성하세요 조건 : list와 인터페이스를 활용하여 과제를 완성합니다. # StudentManager : Interface package week2.assignment_3; public interface StudentManager { void addStudent(Student student); void updateStudent(String name, double score); void deleteStudent(String name); void printAllStudents(); } # Student : class package week2..

[대학교멋사🦁/JAVA] Assignment_2회차_2

멋쟁이사자처럼 로그인 프로그램입니다. 1. 로그인 2. 회원가입 3. 종료 의 기능을 하는 프로그램을 제작합니다. 조건 : map을 활용하여 과제를 완성합니다 package week2.assignment_2; import java.util.*; public class likelion_201902679_KHJ_02 { private Map userInfoList = new HashMap(); static Scanner sc = new Scanner(System.in); public void createNewUser(String id, String pw){ // 새로운 사용자 생성 userInfoList.put(id,pw); } public boolean login(){ // login 기능 String i..

728x90