본문 바로가기

TIL(Today I Learned)

(51)
99클럽 코테 스터디 4일차 TIL + LeetCode 232 (Implement Queue using Stacks, java) 오늘의 학습 키워드큐스택문제 탐색하기문제 문제 풀이 설계하기이 문제를 풀기 위해서는 큐와 스택의 개념을 이해하고 있어야합니다.  Queue 란?선입 선출을 기반으로 동작하는 자료 구조 이고 즉, 먼저 들어간 원소가 제일 먼저 나오는 구조입니다. Stack 이란?후입 선출을 기반으로 동작하는 자료 구조 이며 즉, 나중에 들어간 원소가 제일 먼저 나오는 구조입니다. stack 구조체를 활용해서 선입선출을 하는 것 처럼 구현하여 문제를 풀어주면 됩니다. stack 구조체 2개를 통해서 입력을 받는 stack, 출력을 하는 stack의 역할로 나뉘어서 선언해줍니다.push 메소드가 호출되면 입력을 받는 stack에 원소가 쌓이게 로직을 작성하면 되고pop 메소드 또는 peek 메소드가 호출되면 입력을 받는 st..
99클럽 코테 스터디 3일차 TIL + [백준] 31458 : !!초콜릿 중독 주의!! 오늘의 학습 키워드문자열 문제 탐색하기문제 문제 풀이 설계하기0! = 1, 1! = 1, !0 = 1, !1 = 0문제에서 주어진 조건을 통해 모두 문자열이라고 생각해보면 규칙에 따라서 왼쪽의 값을 오른쪽으로 변경해가며 최종적으로 문자열의 길이가 1이 될때까지 반복해주면 되는 문제입니다. 조건은 팩토리얼 형태를 먼저 계산한다고 되어있으니 0!, 1! 를 먼저 1로 변경해주게끔 로직을 작성하면 될 것 같습니다. 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOExce..
99클럽 코테 스터디 2일차 TIL + [백준] 10820 : 문자열 분석 오늘의 학습 키워드문자열비교입력 방식 문제 탐색하기문제 문제 풀이 설계하기입력받은 문자열을 단어 하나씩 조건에 맞는지 비교하면 되는 문제입니다. 단어가 알파벳 소문자, 대문자, 숫자, 공백 중 하나임을 조건을 통해서 확인하고 각 조건일때 카운트를 증가시키는 로직을 구현해서 최종적으로 입력받은 문자열에 대해 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분하여 출력해주면 됩니다. 이때 문자열의 갯수인 N이 주어지지 않는 다는 것도 유의해야하는데 String input;while((input = br.readLine()) != null){ 위 코드 처럼 작성하게되면 입력이 종료되었을때 이 while-loop가 종료된다고 합니다. 코드import java.io.BufferedReader;import jav..
99클럽 코테 스터디 1일차 TIL + [백준] 1032 : 명령 프롬프트 오늘의 학습 키워드문자열구현비교 문제 탐색하기문제 문제 풀이 설계하기문제를 보면 주어지는 파일 이름의 길이는 일정하고파일이름의 한글자 한글자를 비교해서 특정 위치의 글자가 서로 다르다면 '?'로 치환해서 보여주면 되는 문제입니다.  코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReade..
[TIL] 99클럽 코테 스터디 34일차 TIL + 프로그래머스 개인정보 수집 유효기간 문제 풀이 문제 풀이import java.util.*;class Solution { public int[] solution(String today, String[] terms, String[] privacies) { List list = new ArrayList(); HashMap map = new HashMap(); for (int i = 0; i = type) { list.add(i+1); } } return list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); }}
[TIL] 99클럽 코테 스터디 33일차 TIL + 프로그래머스 신규 아이디 추천 문제 풀이  문제 풀이class Solution { public String solution(String new_id) { String answer = new_id.toLowerCase(); answer = answer.replaceAll("[^a-z0-9-_.]", ""); while (answer.contains("..")) { answer = answer.replace("..", "."); } if (answer.charAt(0) == '.') { answer = answer.substring(1); } if (answer.length() ..
[TIL] 99클럽 코테 스터디 32일차 TIL + 백준 11054 가장 긴 바이토닉 부분 수열 문제 풀이  문제 탐색하기바이토닉 수열이란 수열이 값이 증가했다가 감소하는 수열을 뜻합니다. 예제를 통해서 확인해 보자면 아래와 같습니다.{1, 5, 2, 1, 4, 3, 4, 5, 2, 1}--> 가장 긴 바이토닉 수열 {1, 2, 3, 4, 5, 2, 1} 이렇게 증가했다가 감소하는 최장 길이의 수열을 구해야합니다.바이토닉 수열을 구하기 위해서는 LIS (최장 증가 수열) 과 LDS (최장 감소 수열)을 조합해서 구할 수 있습니다.  최장 증가 수열과 최장 감소 수열의 dp 배열을 구한 뒤 해당 배열의 값을 합치면 오름차순과 내림차순이 합쳐진 수열이 완성되는데 여기서 단순히 두 수열을 합치면 원소가 1개씩 중복되기 때문에 최종 값은 -1을 해줘야합니다.  {1, 5, 2, 1, 4, 3, 4, 5, ..
[TIL] 99클럽 코테 스터디 31일차 TIL + 백준 2631 줄세우기 문제 풀이 문제 탐색하기이 문제는 LIS(Longest Increasing Subsequence, 최장 증가 부분 수열) 문제이고 DP알고리즘을 활용하여 풀 수 있습니다.N명의 아이들이 임의의 순서대로 줄 서 있을 때 최장 증가 수열을 제외한 나머지 아이들을 이동시켜 주면 최소로 이동하면서 번호 순으로 아이들을 줄 세울 수 있습니다. 따라서 최장 증가 수열은 DP 배열의 최대값을 구하게 되면 최장 증가 수열의 수를 카운트 할 수 있고 그 값을 N에서 빼주게 되면 이 값이 바로 아이들을 최소로 이동시키는 수가 될 것 입니다. DP 배열의 값을 구하는 과정은 현재의 수열의 값을 기준으로 그 전 수열의 값들을 탐색하면서 자신보다 작은 값이 있을 경우 그 때의 DP 배열의 값 + 1 과 자신의 DP 배열의 값을..