항해99 11

99클럽 코테 스터디 22일차 TIL - Java 백준 18870 좌표 압축

🌟 Today's FocusBOJ 18870 좌표 압축핵심 개념: 정렬, 중복 제거, 값-인덱스 매핑자료구조: ArrayList/TreeSet, HashMap알고리즘: 정렬 📝 Today I Learned오랜만에 코테 푸는데 정렬이라고 좀 만만하게 봤다가 큰코 다침.문제 분석 ( 재정의 )https://www.acmicpc.net/problem/18870 "Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다."라는 문장의 의미를 처음에 이해 못했다;;막상 까고 보니 "각 숫자보다 작은 서로 다른 숫자들의 개수를 세는 것"이더라...... 외국어 해석하는 줄 알았음.아무튼 N개의 수를 공백으로 구분해서 던져주면, 그걸 '좌표 압축'해서 뱉어내야 된..

DSA/코딩테스트 2025.02.18

99클럽 코테 스터디 16일차 TIL - Java 프로그래머스 더 맵게

🔍 프로그래머스 "더 맵게"https://school.programmers.co.kr/learn/courses/30/lessons/42626?language=java🎯 오늘의 학습 포인트오늘은 자료구조 선택이 알고리즘의 성능과 코드 품질에 얼마나 큰 영향을 미치는지 깊이 있게 이해하게 됐다. 특히 값들을 정렬된 상태로 유지하면서 최소값을 반복적으로 찾아야 하는 상황에서는, 단순히 리스트를 매번 정렬하는 것보다 PriorityQueue를 사용하는 것이 훨씬 효율적이라는 점을 배웠다. 실제로 시간복잡도가 O(N²logN)에서 O(NlogN)으로 크게 개선되는 것을 경험했다. 문제 난이도가 높지 않아서 의도를 재차 재해석하면서 이 의도를 좀 더 명확히 드러내보려고 시도했다. 같은 결과를 내는 두 가지 접근..

DSA/코딩테스트 2025.02.11

99클럽 코테 스터디 9일차 TIL - Java 백준 31562 전주 듣고 노래 맞히기

[Java 코딩테스트] 백준 31562번 - 전주 듣고 노래 맞추기 (feat. HashMap)백준 31562 "전주 듣고 노래 맞추기" 게임을 구현하는 문제를 풀어보았다. 처음에는 단순해 보였지만, 생각보다 많은 고민이 필요했다.혼자서는 도저히 풀이가 떠오르지 않아 구글링의 도움을 받았다. 특히 HashMap과 ArrayList를 함께 사용하는 방식은 다른 개발자들의 블로그를 참고하면서 배웠다.🌟 오늘의 학습 키워드HashMap과 ArrayList를 활용한 데이터 관리와 중복 처리를 학습했다. 또한 StringBuilder를 통한 출력 최적화와 String 메소드 활용 방법도 익혔다.📝 문제 분석처음에는 단순히 배열에 저장하고 찾으면 되겠다고 생각했다. 하지만 문제를 자세히 보니 까다로운 부분들이 ..

DSA/코딩테스트 2025.01.24

99클럽 코테 스터디 8일차 TIL - Java 백준 32978 아맞다마늘

🌟 [백준 32978] 아 맞다 마늘 해결하기📝 Today I Learned오늘은 깜빡하고 뺀 재료를 찾는 문제를 풀어보았다. 처음엔 간단해 보였지만, 생각보다 많은 시행착오를 겪었다.1. 문제 분석 (재정의)N개의 전체 재료 중에서 N-1개만 사용했을 때, 빠진 1개 재료를 찾는 문제다.재료는 대소문자를 구분하며, 중복된 재료는 입력되지 않는다.결국 "차집합"을 구하는 문제라고 볼 수 있다.2. 문제 접근 방식처음에는 배열로 하나씩 순차 비교하려고 했다. 그런데 문득 이런 생각이 들었다.지금은 몇 개 없다고 하지만, N-1개를 일일이 비교하면... 시간이 너무 오래 걸리지 않을까?그래서 해시 자료구조를 떠올렸다. 처음엔 HashMap을 쓸까 고민했는데, 키-값 쌍까지는 필요 없었다.그냥 재료의 존재..

DSA/코딩테스트 2025.01.22

99클럽 코테 스터디 7일차 TIL - Java 백준 15829 해싱

[백준 15829] Hashing - 해시 함수 구현하기🌟 Today's Focus해시 함수의 기본 개념문자열을 활용한 수학적 연산모듈러 연산과 오버플로우 처리Java의 문자열 처리📝 Today I Learned 보자마자 모니터 덮고 이불 속으로 들어가고 싶어지는 텍스트 압박 등장. 사실 처음에 비기너 문제가 아닌데 잘못 들어온 줄 알았다.도무지 풀 의욕이 들지 않아서 미들러 문제 구경 갔더니 DFS & BFS 문제더라 ㅎㅎ그래서 다음을 기약하고 다시 해싱을 진득하게 복습하기로 했다^_^... 처음엔 보기 싫어서 눈을 질끈 감았었는데,일단 풀기 위해서 문제를 읽어보니 해싱에 대한 자세한 소개글이 길 뿐이었다.1. 문제 분석 (재정의)문제를 봤을 때 수식이 있어서 겁먹었다.그래서 가장 먼저 한 건 수식..

DSA/코딩테스트 2025.01.22

99클럽 코테 스터디 6일차 TIL - Java 백준 27160번 할리갈리

🃏 [백준 27160] 할리갈리: HashMap과 배열, ENUM🌟 Today's FocusHashMap 연산과 활용자료구조 성능 최적화Java Stream API입출력 처리 최적화📝 Today I Learned1. 문제 분석 (재정의)오늘 도전한 문제는 할리갈리라는 카드 게임을 구현하는 것이다. 테이블에 여러 장의 카드가 있고, 각 카드에는 과일의 종류와 개수가 적혀있다. 같은 종류의 과일이 정확히 5개가 되는 순간을 찾아내야 한다. 처음 문제를 보았을 때는 배열로 간단하게 해결할 수 있겠다고 생각했다.하지만 오늘 Hash 특강을 듣고 나서, HashMap을 활용하면 더 우아한 해결책이 될 수 있겠다는 생각이 들었다.2. 문제 접근 방식처음에는 단순히 이렇게 접근했다:int[] fruitCount..

DSA/코딩테스트 2025.01.22

99클럽 코테 스터디 5일차 TIL - Java 백준 P10798 세로 읽기

🌟 Today's Focus5개의 단어를 칠판에 가로로 붙인 후, 세로로 읽었을 때 어떤 결과가 나오는지 출력📝 Today I Learned이중 for문을 사용하여 가로(행)와 세로(열)를 순회 1. 문제 분석 ( 재정의 )https://www.acmicpc.net/problem/10798재정의5줄의 문자열을 입력받고, 세로로 읽는 규칙에 따라 각 글자를 순서대로 이어붙여 출력한다."가로줄(행)을 먼저 읽고, 각 줄의 특정 위치(열)의 글자를 가져온다."라는 구조를 따른다. 입력5줄의 문자열 (최대 15글자) 출력세로로 읽은 결과를 한 줄로 출력.2. 문제 접근 방식(1) 입력을 받고 (2) 글자를 세로로 읽어 (3) 출력한다 입력받는 건 가로글자니까, 문자열의 글자를 세로 순으로 저장해야 한다.  ..

DSA/코딩테스트 2025.01.17

99클럽 코테 스터디 4일차 TIL - Java 백준 P2343 기타 레슨 이진 탐색으로 최적의 값 찾기(파라메트릭 서치)

🌟 Today's Focus이진 탐색(Binary Search), 파라메트릭 서치  이진 탐색 정리글 참고: https://readyoun.tistory.com/10 Algorithms - Binary Search 이진 탐색/이분 탐색 Java 구현과 주의사항스터디 1일차에 코테 백준 P2776 암기왕 문제 풀어보려고 찾아보다가 HashSet, HashMap, 이분탐색 방법으로 푼 걸 많이 구경했다. 바이너리서치는 사실 평소에 이름을 많이 들었었고, 실제로 sql 목데readyoun.tistory.com📝 Today I Learned1. 문제 분석 ( 재정의 )문제문제를 풀기 위해 주어진 조건을 다시 정리해보자.강의들이 주어지고, 이 강의를 블루레이에 나눠 담아야 한다. 조건:강의의 순서를 바꾸면 안..

DSA/코딩테스트 2025.01.17

99클럽 코테 스터디 3일차 TIL - Java 백준 P2675 문자열 반복

🌟 Today's Focus학습 키워드 정리 StringBuilder: 효율적인 문자열 생성 및 조작을 위한 클래스Stream API: 데이터를 가공하거나 처리할 때 가독성과 간결함을 제공하는 도구📝 Today I Learned 1. 문제 분석 ( 재정의 )주어진 문자열의 각 문자를 특정 횟수(R)만큼 반복하여 새로운 문자열을 만들어야 한다.2. 문제 접근 방식1) 가장 먼저 입출력의 경우,  Scanner 활용 시, 문자열을 입력받고 `Scanner.next()`를 사용해야 한다. nextLine() 으로 입력받으면 입력 과정에서 공백까지 한 줄을 읽어버린다. 반면, next()는 공백 기준으로 하나의 문자열만 읽어들인다. BufferedReader.readLine() 활용 시, `split()` ..

DSA/코딩테스트 2025.01.15

99클럽 코테 스터디 2일차 TIL - 백준 P11719 그대로 출력하기2 (Java I/O Stream)

🌟 Today's Focus학습 키워드 정리 Java I/OStreamEOF📝 Today I Learned1. 문제 분석 ( 재정의 )입출력(I/O)은 컴퓨터 내부 또는 외부의 장치와 프로그램간에 데이터를 주고받는 것. 문제의 핵심은 입력을 줄 단위로 처리하면서 빈 줄도 포함해 그대로 출력하는 것.입력은 최대 100줄이지만, 정해진 개수가 따로 없다.2. 문제 접근 방식입력을 수정 없이 그대로 출력해야 하므로, 효율적인 입출력 처리가 핵심.` System.out.println`도 가능하겠지만, 대량의 데이터 처리 시, `BufferedReader`와 `BufferedWriter`를 활용하는 게 더 빠르다. 입력이 몇개인지 주어지지 않는 경우, 입력을 EOF(End Of File)까지 처리해서 데이터가..

DSA/코딩테스트 2025.01.14