만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍 162

다형성: 우리는 왜 List list = new ArrayList(); 라고 쓸까?

제목의 질문은 아래로도 대치 가능합니다. 왜 우리는 인스턴스 타입을 클래스 대신 인터페이스로 초기화할까? 우리는 아래처럼 인스턴스를 생성 및 초기화해서는 안됩니다. ArrayList list = new ArrayList(); List list = new ArrayList(); 우리는 위처럼 List 인터페이스를 사용해야 합니다. 인터페이스를 구체클래스의 위에 타입으로 덧씌우는 것은 캡슐화와 낮은 결합도(loose coupling)의 핵심입니다. 나중에는 테스트코드를 작성하기도 쉬워지고 나중에 구현에 변경사항이 생겨도 변화에 쉽게 대응할 수 있습니다. 만약 나중에, 기획자가 요구사항을 바꿔서 ArrayList 가 아니라 Stack 의 기능으로 바꿔야 한다면 해줘야 하는 건 그냥 ArrayList 를 St..

[algorithm] balanced brackets (균형잡힌 괄호)

https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 알고리즘 문제중 주어진 문자열의 괄호가 제대로 닫히는 괄호쌍인지를 확인하는 경우가 있다. EX) (()()) , ((())(()) = True, False 이 때는 보통 Stack 을 활용하지만, stack이 아니어도 균형 여부를 구할 수 있다. ( 가 읽힌다면, left 변수를 더한다 ) 가 읽힌다면, left 변수를 1 뺀다 읽은 뒤 left 가 음수면, Fa..

[JAVA] 펠린드롬 확인

boolean checkPalindrome(String s, int i, int j) { while (i < j) { if (s.charAt(i) != s.charAt(j)) { return false; } i++; j--; } return true; } A string is a palindrome if it reads the same forward as backwards. 어느 방향으로 읽든 똑같이 읽힌다면 그 문자열은 '펠린드롬' 이다. '오디오', '다시합창합시다' , '사고사' 등은 회문(펠린드롬) 이다. 'aabbaa' 등의 알파벳 문자열도 펠린드롬이다. (뜻은 없지만) 문자열이 펠린드롬인지 자바코드로 확인하는 방법은 위와 같다.

[JAVA] 다단계 칫솔 판매

문제 https://programmers.co.kr/learn/courses/30/lessons/77486?language=java 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 내 풀이 import java.util.*; class Solution { private static Map ancestors = new HashMap(); private static Map incomes = new HashMap(); public int[] solution(String[] enroll, String[] ref..