목록2025/02 (45)
개발지식 먹는 하마 님의 블로그
문자열을 응용하는 문제를 하나 풀이했다.GUI에서 구현하는 계산기와 이번 문제풀이에 유용하게 사용한 Pattern과 Matcher에 대해서 정리했다.마지막으로 계산기 도전 기능 구현을 완료했고 마지막으로 한 번더 검토하는 과정에 있다.📚 학습 내용 정리문자열 문제 풀이Pattern과 Matcher를 사용해 풀이했다.https://devhippo.tistory.com/76 1316번 - 그룹 단어 체커✏️ 문제 풀이새로운 문자일 경우 이를 저장한다.중복을 허용하지 않는 HasgSet을 사용하였다.HashSet seen = new HashSet();현재 문자가 이전 문자와 다를 경우, 이 문자가 나온 적이 있는지 확인한다.codevhippo.tistory.com Pattern과 Matcherhttps://..
Pattern과 Matcher는 Java의 정규 표현식(Regax)을 처리하는 클래스이다.이를 사용하면 문자열을 좀 더 자유자재로 다룰 수 있다.Pattern 정규 표현식을 컴파일하여 Matcher 객체를 생성한다.한 번 생성되면 변경할 수 없다. compile(String regex) 정규식을 컴파일하여 Pattern 객체를 생성한다. compile(String regex, int flags) 특정 플래그와 함께 컴파일한다. matches(String regex, CharSequence input) 문자열이 정규식과 완전히 일치하는지 확인한다. split(CharSequence input) 문자열을 분리하여 배열로 반환한다. MatcherPattern 객체를 사용해 문자열과 패턴을 비교한다.matche..

✏️ 문제 풀이새로운 문자일 경우 이를 저장한다.중복을 허용하지 않는 HasgSet을 사용하였다.HashSet seen = new HashSet();현재 문자가 이전 문자와 다를 경우, 이 문자가 나온 적이 있는지 확인한다.contains는 해시 테이블 기반 검색을 하기 때문에 for문 사용해 직접 검사하는 것보다 빠르다.나온적이 있다면 그룹 단어가 아니다. 아니라면 해당 문자를 저장한다.for (char ch : word.toCharArray()) { if (ch != prev) { // 새로운 문자일 경우만 검사 if (seen.contains(ch)) { // 이미 나온 문자라면 그룹 단어가 아님 return false; } seen.a..

그리디 알고리즘(탐욕법) 문제를 하나 풀이했다.GUI에서 구현하는 프로젝트는 입력값을 받는 방법 자체가 콘솔과 조금 달라져서요구사항을 정확하게 충족하기가 어려울 것 같다고 판단했다.따라서 콘솔로 먼저 level2 구현을 완료했다.📚 학습 내용 정리탐욕법 문제 풀이이번 문제는 다소 쉬웠다.https://devhippo.tistory.com/74 1541번 - 잃어버린 괄호✏️ 문제 풀이이번 문제 풀이는 간단하다.-가 등장할 경우, 그 뒤에 등장하는 수를 모두 합해서 뺀다.괄호를 원하는 위치에 삽입할 수 있기 때문에 -가 등장하면 그 뒤에 등장하는 모든 수를 따devhippo.tistory.com 콘솔 기반 계산기 GUI 구현1) level 1 구현 업그레이드exit를 입력받기 전까지의 과정을 while문..

✏️ 문제 풀이이번 문제 풀이는 간단하다.-가 등장할 경우, 그 뒤에 등장하는 수를 모두 합해서 뺀다.괄호를 원하는 위치에 삽입할 수 있기 때문에 -가 등장하면 그 뒤에 등장하는 모든 수를 따로 합해,전체 합계에서 뺄 수 있다. Pattern과 Matcher를 사용해 입력받은 문자열을 구분했다.+와- 또는 숫자인 경우의 앞뒤를 잘랐다.Pattern p = Pattern.compile("(\\d+|[+-])");Matcher m = p.matcher(s);List list = new ArrayList();while(m.find()){ list.add(m.group());} 🖥️ 코드 Scanner sc = new Scanner(System.in); String s = sc..

그리디 알고리즘(탐욕법) 문제를 하나 풀이했다.프로젝트를 GUI에서 구현하고 level2 수준의 구현을 50% 정도 완료했다.📚 학습 내용 정리탐욕법 https://devhippo.tistory.com/72 13305번 - 주유소✏️ 문제 풀이long 사용입력받는 변수는 1,000,000,000이기 때문에 정수형 사용이 가능하다.그러나, 최대값이 1,000,000,000인 두 변수를 연산하기 때문에 그 결과는int의 표현 범위를 벗어날 수 있다.devhippo.tistory.com 계산기 GUI 구현Level 2에서 필요하지 않은 버튼은 잠시 비활성화 해두었다.연산기호가 먼저 입력될 경우 앞에 0이 입력되도록 설정했다.또한, 연산기호가 연속으로 2개 입력되지 않도록 해주었다.public String c..

✏️ 문제 풀이long 사용입력받는 변수는 1,000,000,000이기 때문에 정수형 사용이 가능하다.그러나, 최대값이 1,000,000,000인 두 변수를 연산하기 때문에 그 결과는int의 표현 범위를 벗어날 수 있다.따라서, long 자료형을 사용하는 것이 좋다.(int로 받아도 무방하나 연산을 위해 long으로 형변환을 해줘야 하는 노고가 있기 때문이다.)1) 이동한 도시의 주유비가 현재 최소 주유비보다 쌀 경우, 최소 주유비를 해당 값으로 변경한다.long result = 0;long minCost = 1000000000;for (int i = 0; i 2) 이동할 때마다 이동 * 최소 주유비 값을 합계에 더한다.if(cost 🖥️ 코드 class Main { public static v..
그리디 알고리즘(탐욕법) 문제를 하나 풀이했다.Java의 제네릭, 람다, 스트림, JFrame에 대한 내용을 정리했다.프로젝트의 요구사항을 명세하고, level1 수준을 콘솔로 구현했다.📚 학습 내용 정리탐욕법 https://devhippo.tistory.com/67 1931번 - 회의실 배정✏️ 문제 풀이어떤 자료형을 사용할 것인가?동적 or 정적 배열?우선순위에 따라 데이터 정렬하기어떻게 탐색을 진행할 것인가? 1) 어떤 자료형을 사용할 것인가?시간의 최댓값은 2의 31-1이다.intdevhippo.tistory.com 제네릭, 람다, 스트림, JFramehttps://devhippo.tistory.com/68 Java - 제네릭 (Generic)제네릭 Genericc++의 Template과 동일한..

JFrameJava Swings 라이브러리에서 지공하는 GUI 창을 생성하는 클래스이다.클래스 생성 시, superclass를 JFrame으로 지정한다.지정하지 못한 채 클래스 생성 시, 직접 extends JFrame을 입력한다. 화면 좌표계좌측 상단이 (0, 0)이고우측, 아래로 갈 수록 x, y값이 증가한다.창 설정 메서드메서드설명setTitle(String title)창의 제목을 설정setSize(int width, int height)창의 크기 설정 (가로, 세로)setResizable(boolean resizable)창 크기 조절 가능 여부 설정 (true: 가능, false: 고정)setVisible(boolean visible)창을 화면에 보이게 설정 (true: 표시, false: 숨김)..
람다 Lambda익명 클래스를 더 간결하게 표현하는 문법코드를 더 짧고 가독성 높게 작성할 수 있다.( 매개변수 ) -> { 실행 코드 }함수형 인터페이스 (추상 메서드가 하나만 존재하는 인터페이스) 에서만 사용할 수 있다.@FunctionalInterfaceinterface MyFunction { int calculate(int x, int y);}// 람다 표현식 사용MyFunction add = (a, b) -> a + b;MyFunction multiply = (a, b) -> a * b;System.out.println(add.calculate(5, 3)); // 출력: 8System.out.println(multiply.calculate(5, 3)); // 출력: 15스트림(strea..