전체 글 168

[JAVA] OOP 객체 지향 4대 원칙

객체지향 프로그래밍을 해야 하는 이유? 유지 보수성 + 재사용성 캡슐화 정보 은닉 public : 모두가 접근 가능 protected : 상속 / 같은 패키지 내 클래스에서 접근 가능 default : 같은 패키지 내 클래스에서 접근 가능 private : 본인만 접근 가능 캡슐화를 하는 이유? 캡슐화를 하는 이유는 정보 은닉이다. 외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막고, 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다. 상속 재사용 => extends 하위 클래스 - 상위 클래스 하위클래스 is a kind of 상위클래스 하위 클래스는 상위클래스 특성을 재사용하고, 확장한다. 상위 클래스의 물려줄 특성이 많을수록 좋다 (LSP) 상위 클래스가 너무 빈약하면, ..

[JAVA] Call by value vs Call by reference

값에 의한 호출 / 참조에 의한 호출 참조에 의한 호출은 자바에서는 의견이 분분하다고 한다. 객체를 만들어서 호출해도 결국은 새로운 주소를 만들어서 호출한다고 한다. https://devlog-wjdrbs96.tistory.com/44 [JAVA] Call by Value 와 Call by reference 란 ? C언어를 주로 공부 했던 나는 Call by value 와 Call by reference 에 대해서 call by value 는 값을 넘기는 거고 call by reference 는 포인터를 이용해서 주소를 넘긴다고 알고 있다. 하지만 누군가 나에게 이.. devlog-wjdrbs96.tistory.com

[SQL] Column 'product_id' in group statement is ambiguous

GROUP BY Column 'product_id' in group statement is ambiguous Column 'partner_id' in group statement is ambiguous Column 'product_id' in group statement is ambiguous Column 'product_id' in group statement is ambiguous Column 'partner_id' in group statement is ambiguous 끊임없이 이런 로그들이 떴다. 대수롭지 않게 느꼈는데, 평상시에 굉장히 실수를 하고 있다는 걸 깨달았다. 이 외에도 긴 쿼리였는데, 잘라서 확인하다 보니 이 쿼리에서 문제가 있는 걸 알았고, 습관적으로 GROUP BY 를 사용하고 ..

Greedy Algorithm - 씨름 선수

씨름 선수 설명 현수는 씨름 감독입니다. 현수는 씨름 선수를 선발공고를 냈고, N명의 지원자가 지원을 했습니다. 현수는 각 지원자의 키와 몸무게 정보를 알고 있습니다. 현수는 씨름 선수 선발 원칙을 다음과 같이 정했습니다. “A라는 지원자를 다른 모든 지원자와 일대일 비교해서 키와 몸무게 모두 A지원자 보다 높은(크고, 무겁다) 지원자가 존재하면 A지원자는 탈락하고, 그렇지 않으면 선발된다.” N명의 지원자가 주어지면 위의 선발원칙으로 최대 몇 명의 선수를 선발할 수 있는지 알아내는 프로그램을 작성하세요. 입력 첫째 줄에 지원자의 수 N(5

Two pointers, Sliding window[효율성 : O(n^2)-->O(n)] - 두 배열 합치기 / 공통원소 구하기

두 배열 합치기 two pointer 알고리즘 사용 o(nlogn)이 아닌 o(n) 으로 짜는 것 오름차순으로 정렬된 두 배열을 오름차순으로 합쳐 출력 a[p1] < b[p2] 비교하는 것 import java.util.*; public class Main { public ArrayList solution(int n, int m, int[] a, int[] b){ ArrayList answer = new ArrayList(); int p1=0, p2=0; while(p1

Stack, Queue(자료구조) - 올바른 괄호 / 괄호문자제거

올바른 괄호 스택 LIFO 스택의 대표적인 문제 Stack stack = new Stack(); import java.util.*; public class Main { public String solution(String str){ String answer = "YES"; Stack stack = new Stack(); for(char x : str.toCharArray()){ if(x =='(') stack.push(x); else { if(stack.isEmpty()) return "NO"; stack.pop(); } } if(!stack.isEmpty()) return "NO"; return answer; } public static void main(String[] args){ Main T = n..

HashMap, TreeSet (해쉬, 정렬지원 Set) - 학급 회장

학급 회장 가장 많이 뽑힌 사람이 학급 회장 mport java.util.*; public class Main { public char solution(int n, String str){ char answer = ' '; HashMap map = new HashMap(); // ***** for(char x : str.toCharArray()){ // key의 개수 세기 - x의 key 가 없으면 0 map.put(x, map.getOrDefault(x , 0) + 1); } // System.out.println(map.containsKey('A')); // 존재 여부 true // System.out.println(map.size()); // key의 개수 // System.out.println(ma..

반응형