Algorithm

·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net [풀이] 원하는 문서가 몇 번째로 인쇄되는지를 출력해야 하기 때문에 인쇄 큐 순서가 바뀔 때마다 인덱스 순서도 같이 바꿔줘야 한다. 그래야만 원래 m번째 문서가 언제 출력되는지 구할 수 있다. 입력값을 알맞게 변수에 넣은 후 idx 리스트를 선언한 후 원하는 문서 인덱스 값은 'target'으로 바꾼다. 예를 들어 예제 입력의 두 번째 테스트 케이스에서 idx[m] = 'target'을 하면..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net [풀이] 2021.07.28 - [BOJ] - [Python] BOJ/백준 11650번 좌표 정렬하기 [Python] BOJ/백준 11650번 좌표 정렬하기 [문제] https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net [풀이] 처음에는 슬라이싱을 이용해 str(i)[-3:] == '666' 이런 식으로 끝에서부터 세 자리씩 '666'과 같은지 비교해야 되나 했다. 생각해보니 문자열은 in을 이용해 간단하게 풀 수 있는 방법이 있었다. i가 666부터 1씩 증가하는 while문이 있다. 만약 i를 str로 바꾼 문자열 내부에 '666'이 있다면 cnt를 1 증가시켜준다. cnt가 입력값인 n과 일치한다..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net [풀이] 분해합은 n과 n을 이루는 각 자릿수의 합을 구해야 하는데 N을 이루는 각 자릿수의 합을 구하는 부분을 브루스 포스 알고리즘으로 풀어야겠다고 생각했다. 1부터 n+1까지 반복문을 돈다. str함수를 통해 i를 자리수마다 쪼개 리스트 A에 넣는다. 숫자 전체인 i와 자리수의 합인 sum(A)를 더해 res 변수에 넣는다. 만약 res가 n과 같다면 i값..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net [풀이] 재밌는 문제였다. (내가 한 번에 풀면 재밌는 문제 아니면 재미없는 문제 ^^~) stack은 숫자 값을, result는 '+' 혹은 '-' 값을 담을 리스트이다. next_turn은 pop한 뒤 다시 숫자를 쌓기 시작할 때 어느 수부터 쌓는지 기억하는 변수이다. 예를 들어 1, 2, 3, 4를 a..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net [풀이] 이분 탐색으로 푸는 방법도 있지만 해쉬 자료구조를 이용해 풀었다. 상근이가 갖고 있는 숫자 카드를 차례대로 한 개씩 뽑아 그 숫자가 hashmap 딕셔너리의 key에 있다면 value값을 1 증가시켜주고 숫자가 딕셔너리에 없다면 해당 key값을 추가시킨다. [코드] import sys if __name__ == '__main__': n = int..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1237 1237번: 정ㅋ벅ㅋ 우주를 정ㅋ벅ㅋ할 사람에게는 예제 입력과 예제 출력이 필요하지 않다. www.acmicpc.net [풀이] 심심해서 난이도 없음에 들어갔다가 풀었는데 그냥 웃기다.. 이것도 궁금한 사람이 있을 것 같아서 일단 올린다 하하 [코드] print("문제의 정답");
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net [풀이] 차례대로 주어지는 좌표를 리스트 형식으로 coordinate 리스트에 넣는다. (이중 리스트로 저장됨) lambda를 이용해 sort 기준을 정해준다. 문제에서는 x좌표가 같으면 y좌표가 증가하는 순서로 정렬해야 하기 때문에 다중 조건을 사용했다. 우선 첫 번째 인자인 x[0]을 기준으로 정렬하고 만약 x[0]이 같을 경우 두..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net [풀이] 간단한 문제인데 삼중 for문의 범위 지정이 가장 신경 써야 할 부분 같다. 특정 카드를 한 장 뽑았다면 다시 그 카드를 뽑을 수 없기 때문에 세 반복문의 index가 겹치지 않아야 한다. 세 카드를 더했을 때 m을 넘지 않는 값 중 가장 큰 값을 구해준다. [코드] import sys if __name__ == '__main__': n, m = ..
서채리
'Algorithm' 태그의 글 목록 (7 Page)