[프로그래머스 / Java] 하샤드 수
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 문제 해석 받은 숫자의 각 자리수의 합이 나누어 떨어져야한다. 예를들어 1111을 받으면 1+1+1+1 = 4, 1111이 4로 나누어 떨어지면 하샤드 수 이다. 그럼 각 자리수를 더해서 직접 나누어 보면 되지않을까? 3. 첫번째 풀이 class Solution { public boolean solution(int x) { boolean answer = true; int x2 = x; int tmp = 0; if (x > 1000) { int a = x/1000; tmp += a; //1000..
[LoaTodo / Spring] 전략패턴(Strategy Pattern)을 이용한 코드 리팩토링
·
Project/LoaTodo
1. 서론 디자인 패턴 중 전략패턴에 대해 공부하였고 프로젝트에서 수정하면 좋은 부분이 생각나서 반영하였습니다. - 공부자료 1 : 전략 패턴 예제 작성 + 깃허브 커밋 (참고. JAVA 객체 지향 디자인 패턴 서적) Fetch: 전략패턴 · minhyeok2487/DesignPattern@1a60ca0 minhyeok2487 committed Feb 26, 2024 github.com - 공부자료 2 : 사이트 전략 패턴 / 디자인 패턴들 / 행동 패턴 전략 패턴 다음 이름으로도 불립니다: Strategy 의도 전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환 refactoring.guru 2. 리팩토링 2 - 1. 리팩토링 부분 현재 LoaTo..
[Java] 스택(Stack)이랑 큐(Queue)가 뭔데? + 코딩테스트 문제
·
알고리즘 & 코딩 테스트/알고리즘
1. 스택(Stack) 1 - 1. 스택이란? "쌓다", 데이터를 차곡차곡 쌓아 올린 형태의 자료구조를 말합니다 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있습니다. 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 LIFO(Last In First Out) 구조 가장 최근에 스택에 삽입된 자료의 위치를 top이라고 합니다. 활용 예시 웹 브라우저 뒤로가기 실행 취소(Ctrl + z) 역순 문자열 만들기 후위 표기법 계산 수식의 괄호 검사(연산자 우선순위 표현을 위한 괄호 검사) 1 - 2. 자바에서의 스택 자바에서의 스택은 Stack 클래스를 구현하여 제공하고 있습니다. Stack st = new Stack(); Stack의 메서드 boolean empty() : Stack이 비어있는지 확인 ..
[Java] 오버로딩(OverLoading)??
·
Java
1. 오버로딩(OverLoading)이란? 메서드는 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 합니다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있습니다. 이것을 오버로딩(OverLoading)이라고 합니다. 2. 오버로딩(OverLoading)의 조건 메서드 이름이 같아야 합니다. 매개변수의 개수 또는 타입이 달라야 합니다. 변환타입은 영향이 없습니다. 3. 예시 3 - 1. 대표적인 예시 "println" 가장 대표적인 예시로 println 메서드가 있습니다. println메서드를 호출할 때 매개변수로 지정하는 값의 타입에 따라서 호출..
[Java / 코딩테스트] 겹쳐진 압축 해제
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 전형적인 스택 문제 ")"까지 보고 반복문 2. 코드 import java.util.*; class Solution { public String solution(String s){ String answer = ""; Stack st = new Stack(); for (char c : s.toCharArray()) { if(c == ')') { String tmp = ""; while (!st.empty()) { String t = st.pop(); if(t.equals("(")) { String num = ""; while (!st.empty() && Character.isDigit(st.peek().charAt(0))) { num = st.pop() + num; } String res = "..
[Java / 코딩테스트] 최대 길이 연속수열
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 중복을 제거해야 하므로 Set을 쓰면 될거같은데 정렬을 해야하나? nums의 길이가 300,000 이므로 시간복잡도를 최대한 적게 써야한다. 정렬 없는 HashSet으로 해결 2. 코드 import java.util.*; class Solution { public int solution(int[] nums){ int answer = 0; HashSet numSet = new HashSet(); for (int num : nums) { numSet.add(num); } for (Integer i : numSet) { if(numSet.contains(i-1)) continue; int cnt = 0; while (numSet.contains(i)) { cnt++; i++; } answer = M..
마볼링
'java' 태그의 글 목록