반응형

알고리즘 144

[프로그래머스]JAVA - Level1. 신규 아이디 추천

https://school.programmers.co.kr/learn/courses/30/lessons/72410?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 7개의 단계가 있어서 문제가 어려워 보이지만 매우 간단하다. 문제를 보자마자 정규표현식을 떠올렸고 생각나는대로 작성했다. 정규표현식을 몰라도 충분히 풀 수 있는 문제이기 때문에 전혀 어렵지 않지만 정규표현식의 사용 유무에 따라 코드 길이가 엄청 달라진다. class Solution { public String solution(String new_id) { String..

[프로그래머스]JAVA - Level2. 두 큐 합 같게 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제 설명에 나와있는 내용대로 큐를 이용해서 풀면 된다. 문제를 보자마자 높은 값에서 낮은 값으로 인자를 이동시키면 풀면 된다는 걸 알았다. 하지만 큐의 선언과 사용 방법을 알지 못해서 구글링을 했다. 이 문제에서 주의해야 할 건 합계(sum)가 int 형이면 오버플로우가 발생할 수 있기 때문에 long 형으로 선언해야 한다는 거다. 사실 문제를 잘 읽고 풀었다면 ..

[백준]JAVA - 10872번 팩토리얼

https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 1. int형의 범위를 넘어서기 때문에 long 타입으로 풀어야함. 2. 0! 는 1이다. import java.util.Scanner; public abstract class Main{ static Scanner sc = new Scanner(System.in); public static void main(String[] args) { long num = sc.nextLong(); // 0! = 1 if (num == 0) { System.out.println(1); } else { long ..

[프로그래머스]JAVA - Level2. 124 나라의 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 보자마자 몫과 나머지를 이용하는 문제라는 걸 파악했지만 생각보다 오래 걸렸음. 이유는 기본적인 3진법과의 차이가 있다는 점. 기본적인 3진법: 0, 1, 2, 10, 11, 12 124나라의 3진법: 1, 2, 4, 11, 12, 14 차이점은 "일의 자리에 1, 2, 4 모든 숫자가 올 수 있다." 그렇기 때문에 나머지가 0으로 떨어지는 경우 숫자에서 -1을 해주어야한다. class..

[프로그래머스]JAVA - Level3. N으로 표현

https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음부터 도저히 감이 안잡힌 문제라서 다른 블로그를 봤더니 대부분이 깊이 우선 탐색(dfs)으로 문제를 해결하는 걸 봤습니다. 깊이 우선 탐색에 대해서 잘 모르시는 분은 아래를 참고해주세요. (https://sookr5416.tistory.com/103) [JAVA] 깊이 우선 탐색 DFS 개념과 작동 방식 금일 프로그래머스에서 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 관련 알고리즘 문..

깊이 우선 탐색 DFS 개념과 작동 방식

금일 프로그래머스에서 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 관련 알고리즘 문제를 풀다가 막혀버린 두부입니다. 이렇게 쉬워보이는 알고리즘도 못 푸니까 스스로에게 화가 나네요. 잡담은 여기까지하고 깊이 우선 탐색의 개념과 작동 방식에 대해서 알아보겠습니다. DFS (Depth-First-Search) 깊이 우선 탐색이라고 불리고 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 특징 자기 자신을 호출하는 순환 알고리즘 (재귀 함수, 스택) 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사해야함 탐색 하는 중에 더 이상 갈 수 없는 곳까지 가게 되면 가장 가까운 갈림길로 돌아와서 다른 방향으로 탐색을 진행함 모든 노드를 방문하고자 할 때 사용함 너비우선탐색(bfs)에 비해서 간단..

알고리즘/이론 2022.07.06

[프로그래머스]JAVA - Level3. 입국심사

https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 알고리즘 2단계를 간간히 풀다가 3단계를 처음으로 풀어봤습니다. 심사하는데 걸리는 시간이 다른 각 각의 심사관들이 N명을 검사하는데 걸리는 최소 시간을 구하는 문제입니다. 처음에는 1초씩 더 해가면서 풀었더니 시간 초과가 발생해서 이분 탐색을 이용해서 풀었습니다. 1. 심사하는데 걸리는 시간의 최소값(min)과 최대값(max)을 구함 2. 최소값과 최대값의 중간값(mid) [이분 탐색 시간]..

[프로그래머스]JAVA - Level 2. 뉴스 클러스터링

https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.ArrayList; class Solution { public int solution(String str1, String str2) { int answer = 0; ArrayList arr1 = new ArrayList(); ArrayList arr2 = new ArrayList(); // 대문자로 변경 str1 = str1.toUpperCase(); str2 = s..

[프로그래머스]JAVA - Level 2. 문자열 압축

https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(String s) { int answer = Integer.MAX_VALUE; int slen = s.length(); if (slen == 1) return 1; // 문자열 길이가 1일 경우 for (int i=1; i 1) temp += cnt; // 다를 경우 숫자 입력 및 전 단어 입력 temp += word1; cnt =..

[프로그래머스]JAVA - Level 2. 오픈채팅방

https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public String[] solution(String[] record) { ArrayList List = new ArrayList(); // id + 들어왔습니다. 나갔습니다. Map map = new HashMap(); // id, name for (int i=0; i uid1234, Ryan break; } } String[..

반응형