[BoJ] - 10799번 쇠막대기
·
알고리즘/백준
해결 아이디어방법: 스택(Stack) 활용괄호 열기(( 또는 [)는 스택에 push괄호 닫기() 또는 ])를 만나면:스택을 pop하면서, 숫자를 모아 중첩된 값을 계산가장 먼저 나오는 괄호쌍이 올바른지 확인계산된 값을 다시 스택에 push모든 문자열을 처리한 후, 스택에 남은 숫자들을 더한 것이 결과중간에 잘못된 괄호 구조가 있다면 0 출력 import java.io.*;import java.util.*;public class 쇠파이프 { static StringBuffer sb; static BufferedReader br; static char[] chars; static Stack stack; static void input() { try { ..
[BoJ] - 2504번 괄호의 값
·
알고리즘/백준
입력괄호열을 나타내는 문자열이 한 줄로 주어진다.문자열 길이: 1 이상, 30 이하문자열은 '(', ')', '[', ']'로만 구성됨출력주어진 괄호열이 올바른 괄호열이라면 계산된 정수 값을 출력올바르지 않은 괄호열이라면 0 출력 해결 아이디어 열린 괄호 (, [ 는 스택에 push닫힌 괄호 ), ] 가 나오면:스택에서 열린 괄호 또는 중간 숫자들을 꺼내며 계산올바른 짝인지 확인하고, 중간 값을 2 또는 3 곱하여 다시 스택에 push괄호열이 끝나고 스택에 정수만 남았다면, 모두 더해서 결과 반환중간에 잘못된 구조 발견 시 즉시 0 출력다음 조건 중 하나라도 해당되면 0을 출력합니다.열린 괄호 없이 닫힌 괄호가 나올 때괄호쌍이 서로 맞지 않을 때 (( ] 또는 [ ))문자열 처리 후 스택에 괄호가 남아..
[BoJ] - 2493번 탑
·
알고리즘/백준
입력첫 줄: 탑의 개수 N N N (1 ≤ N N N ≤ 500,000)둘째 줄: N N N개의 탑 높이 (1 ≤ 높이 ≤ 100,000,000), 공백으로 구분높이는 모두 서로 다름 (문제 조건)출력각 탑에서 발사된 레이저를 수신한 탑의 번호를 공백으로 구분해 출력수신 탑이 없으면 0 https://www.acmicpc.net/problem/2493 해결 아이디어이 문제는 스택을 사용하면 효율적으로 해결할 수 있습니다. 스택을 사용하기전 단순하게 접근을 했을떄, 직관적인 해결법은 왼쪽으로 모든 이전 탑을 확인하며, 자신보다 높은 첫 번째 탑을 찾는 것입니다. 예: 5번 탑(높이 4)의 경우, 4번(7), 3번(5), 2번(9), 1번(6)을 순서대로 확인.4번 탑(높이 7)이 높이 4보다 크므로 여..
객체 지향 SOLID 원칙 - DIP
·
개발이야기/Design Pattern
DIP (Dependency Inversion Principle) 는 의존성 역전 준말로 아래와 같은 원칙을 가지고 있습니다. A. 상위 모듈은 하위 모듈에서 아무것도 가져오지 않아야 한다.B. 추상화는 세부 사항에 의존해서는 안 됩니다. 세부 사항(구체적 구현)은 추상화에 의존해야 합니다. DIP 원칙을 처음 봤을 때 구현에 의존하지 말고 추상화 계층에 의존을 하라는 이전의 원칙과 비슷하게 느꼈습니다. 하지만 DIP는 단순히 인터페이스에 의존하는 것을 넘어, 고 수준 모듈과 저 수준 모듈의 관계까지 아우르는 원칙입니다. 즉 전체 시스템의 모듈들이 구체적인 구현에 의존하지 않는다면 유연하게 소프트웨어를 확장을 할 수 있습니다.  DIP 관련 예시를 살펴 보겠습니다.  알림이라는 클래스가 이메일 서비스와 ..
객체 지향 SOLID 원칙 - ISP
·
개발이야기/Design Pattern
ISP 는 Interface Segregation Principle (인터페이스 분리 원칙) 준말로 아래와 같은 원칙을 가지고 있습니다. 클라이언트가 자신이 이용하지 않는 메서드에 의존하면 안된다. 클라이언트가 목적과 용도에 맞게 인터페이스를 제공하여 사용하지 않는 메소드를 제거해야 한다는 것입니다. 즉 사용하지 않는 메소드는 상속 받지도 말고 구현 하지도 말아라 입니다.  이는 인터페이스를 더 작고 특화된 단위로 분리함으로써 클라이언트의 의존성을 최소화하고 유연성을 높이는 것을 목표로 합니다.하나의 큰 인터페이스 대신 여러 개의 작은 인터페이스로 나누어 각 클라이언트가 필요한 기능 만을 구현할 수 있도록 하는 것입니다. 이렇게 함으로써 시스템의 결합도를 낮추고 유지보수성을 향상시킬 수 있습니다. 차의 ..
객체 지향 SOLID 원칙 - LSP
·
카테고리 없음
리스코프 치환 원칙(LSP)은 SOLID 원칙중에서 가장 이해하기가 어려웠습니다. 우선 리스코프라는 이름을 가진 분이 연구를 했다고 하는데 컴퓨터 과학 분야에 유명한 분인 것 같습니다. 튜링상을 받았다고 하니 대단하신 분이죠.  LSP 를 한 줄로 정리해서 말하면서브 타입은 언제나 기반 타입으로 교체를 할 수 있어야 한다. 내용이 너무 어려워서 이걸 풀어서 쉽게 설명 드리면 부모 클래스의 인스턴스를 사용하는 위치에 자식 클래스의 인스턴스를 사용 했을 때 코드가 원래의 의도대로 동작을 해야 한다는 의미입니다. 추상층에서 정의된 부모가 제공해준 메소드들을 재 정의를 하지 말고 사용을 하라는 의미 입니다.(부모가 준 정보를 훼손하지 말고 사용하라는 뜻 같습니다) 다형성의 원리도 클래스를 상속 및 합성하여 타입..
cafe-jun12
cafe-jun12