본문 바로가기

알고리즘90

[백준] 7785번 회사에 있는 사람 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 문제 상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다. 각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다. 상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모.. 2024. 3. 25.
[프로그래머스] 과제 진행 / 우선순위 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 과제는 시작하기로 한 시각이 되면 시작합니다. 새로운 과제를 시작할 시각이 되었을 때, 기존에 진행 중이던 과제가 있다면 진행 중이던 과제를 멈추고 새로운 과제를 시작합니다. 진행중이던 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춰둔 과제를 이어서 진행합니다. 만약, 과제를 끝낸 시각에 새로 시작해야 되는 과제와 잠시 멈춰둔 과제가 모두 있다면, 새로 시작해야 하는 과제부터 진행합니다. 멈춰둔 과제가 여러 개일 경우, 가장 최근에 멈춘 과제부터 시작합니다. 과제 계획을 담은 이차원 문자열 배열 pl.. 2024. 3. 14.
[프로그래머스] Lv2 두 원 사이의 정수 쌍 첫 번째 시도(실패) - 규칙 찾기 반지름 1 - 5(4+1) 반지름 2 - 13(4+9) 반지름 3 - 29(4+25) 반지름 4 - 53(4+49) - 규칙 보여서 코드 짰음 - 예외가 있었음(규칙이 아니였던 거임) 테두리가 꼭 4점만 정수여야 하는 건 아님 두 번째 시도 (성공 and 타임아웃) x,y 각각 +1 하면서 x^2 + y^2 2024. 3. 12.
[프로그래머스] 소수찾기(완전탐색, 소수 찾기) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사고 과정 완전 탐색으로 숫자 조합 배열에 저장하기 배열 하나씩 돌면서 소수 찾기 코드 import java.util.HashSet; public class Solution { HashSet numberSet = new HashSet(); public int solution(String numbers) { permutation("", numbers); // 가능한 모든 숫자 조합 생성 return (int) numberSet.stream().filter(this::isPrime).count(); // 소.. 2024. 2. 23.
[프로그래머스] 완전탐색, 규칙찾기 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 배운 점 완전탐색 문제를 선택해서 완전탐색 문제인지는 알고있었다. 그래도 처음 봤다고 생각하고 이 문제를 어떻게 풀지 생각했다. 규칙 찾기 시도 yellow가 24개이고 24x1 줄 일때 브라운은 26+26+1+1= 54 개이다 yellow가 24개이고 12x2 줄 일때 브라운은 14+14+2+2= 30 개이다 yellow가 24개이고 8x3 줄 일때 브라운은 10+10+3+3 = 26 개이다 yellow가 24개이고 6x4 줄 일때 브라운은 8+8+4+4 = 24개이다 공식이 보인다. (엘로우 가로+ .. 2024. 2. 23.
완전탐색(브루트 포스), 백트래킹 https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr A가 고를 주사위의 총 경우의 수 구하기 < - 완전탐색 static int n; static boolean[] visited; static List diceComb; static void permutation(int depth, int index, int[] arr) { if (depth == n / 2) { diceComb.add(arr.clone()); //깊은 복사 return; } fo.. 2024. 2. 23.
[프로그래머스] 요격 시스템(정렬, 그리드 / 자바) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 주황색은 폭탄이 날라가는 구간이다. 우린 이 폭탄을 미사일로 요격해야 한다. 이때 최소로 필요하는 요격 미사일 개수를 구하면 되는 문제다. 입출력 예 설명 사진 - 프로그래머스 출처 풀이 어떤 유형의 문제인지 파악하는 것이 첫 번째이다. 정렬, 그리드 문제이다. 그리드 알고리즘 : 매 순간 최적이라고 생각되는 선택을 해나가면서 최종적인 해답에 도달하는 방식 이차원 배열을 첫번째 원소 기준으로 오름차순으로 정렬한다. 카운트를 해주며 요격 구간을 변경한다. 이전 폭탄구간에 현재 폭탄 시작점이 들지.. 2024. 2. 20.
[백준] 좌표 정렬 11650번 (이차원 배열 정렬) https://st-lab.tistory.com/110 출처: import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[][] arr = ne.. 2024. 2. 20.
알고리즘 관련 단어 BFS, DFS는 반드시 알아놔야 한다. 하드코딩으로 문제를 해결할 수 있다 하더라도 시간복잡도에서 걸러지기 마련이다. DFS (Depth-First Search) 한 가지 경우를 검증하고 아니면 돌아가는 방식이다. 스택, 재귀함수 이용 / 그래프 구조, 미로 찾기 유용 visited 리스트를 만들어서 방문한 노드를 저장한다 DFS를 최단거리에서 사용하지 않는 이유 목적지와 반대방향이더라도 끝까지 탐색하기 때문에 BFS (Breadth-First Search) visited 리스트를 만들어서 방문한 노드를 저장한다 큐 이용 / 최단 경로 찾기 유용 가중치가 없는 간선, 최단거리 문제에 이용 가중치가 있는 간선에서 BFS를 쓰지 않는 이유 BFS가 Greedy한 알고리즘이 아니기 때문이다 다익스트라(Dij.. 2024. 2. 20.