본문 바로가기
728x90

알고리즘47

[백준] 1654번 랜선 자르기(Java) https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 처음에는 주어진 랜선의 길이를 모두 더하고 필요한 개수로 나눈 후 1씩 감소하면서 필요한 개수 이상의 랜선이 나오게 되면 반복문을 나와 출력하도록 코드를 작성하였다. import java.io.*; import java.util.*; public class Main { static int stoi(String s) { return Integer.parseInt(s); .. 2024. 3. 8.
[백준] 1966번 프린터 큐(Java) https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 인쇄하고자 하는 문서의 중요도가 주어지고 뒤에 더 중요한 문서가 존재한다면 앞의 문서를 다시 큐에 넣는 문제이다. 이때 특정 문서의 출력되는 순서를 알고자 하므로 문서는 중요도와 처음 순서 정보를 가지고 있어야 한다. 또한 큐의 최대값을 찾을 수 있어야 한다. 큐에 두 가지 정보를 저장하는 방법으로 두 가지를 생각할 수 있다. 1. 커스텀한 클래스를 사용 2. int 배열을 사용 처음 생각한 방법은 .. 2024. 3. 7.
[백준] 11723번 집합(Java) https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 처음에는 집합이라는 단어를 보고 자바의 Set을 사용하여 문제를 풀어야겠다는 생각이 들었다. 그러나 계속 시간초과가 발생해서 찾아보니 비트마스크를 사용하여 풀 수 있음을 알게되었다. Bitmask(비트마스크) 데이터의 특정 비트를 사용하여 특정 상태를 나타내거나 저장하는 기술 주로 플래그를 설정하거나 집합을 나타내는 데 사용됨 장점 수행 시간이 빠름 간결한 코드 메모리 사용량이 적음 비트 연산자: AND(&), OR(|), XOR(.. 2024. 3. 6.
[프로그래머스] 숫자의 표현(Java) https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 숫자n를 연속하는 자연수의 합으로 표현할 수 있는 경우의 수를 구하는 문제이다. Lv 2 문제로 넘어오면서 정확성 테스트 뿐만 아니라 효율성 테스트까지 통과해야 문제를 풀 수 있다. 어제 아침에 이 문제를 풀었는데 처음에는 0부터 n까지 각각 0부터 자기자신까지 더한 합을 리스트에 저장한 뒤 for문을 돌면서 n을 리스트 내의 요소들의 차로 표현할 수 있는지 검사한 뒤 경우의 수를 +1했다.. 2023. 11. 9.
[프로그래머스] 올바른 괄호(Java) https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 보자마자 스택으로 푸는 방법이 생각나서 스택을 이용해 풀었다. 나의 풀이 static boolean solution(String s) { Stack stk = new Stack(); for(int i=0; i 2023. 11. 6.
[프로그래머스] 할 일 목록(Java) 제출한 코드 class Solution { public String[] solution(String[] todo_list, boolean[] finished) { String[] str = new String[finished.length]; int num = 0; for(int i=0;i 2023. 10. 26.