728x90
반응형

백준 62

[파이썬] BOJ_2798(블랙잭)

문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 해설 n장의 카드 중 3장을 더해 m을 넘지 않으면서 가장 가까운 수를 구하는 문제기 때문에 3중 반복문을 돌면서 한장씩 더하면 된다. 여기서 조심해야 할 것은 j는 i+1부터 돌아야 하고, k는 j+1부터 돌아야 한다는 것이다. 그렇지 않으면 똑같은 카드를 더하게 된다. 3장을 더한 값이 m보다 작거나 같으면 배열에 넣고 m을 넘지 않으면서 가장 가까운 수는..

알고리즘/백준 2023.06.01

[파이썬] BOJ_2644(촌수계산)

문제 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 해설 입력값을 받고 그래프를 생성하는 부분을 지나면 dfs 혹은 bfs로 문제를 풀어야 한다. dfs로 풀 때는 촌수를 cnt에 저장했다. 함수 한 번 씩 돌 때 마다 촌수가 1씩 올라간다. bfs로 풀 때는 deque를 이용하면 된다. 따로 촌수를 받을 필요는 없고 visited 변수에 현재 visited 값에 1촌을 더해서 저장해주면 된다. 처음 a를 1로 시작하는데 ..

알고리즘/백준 2023.05.30

[파이썬] BOJ_2231(분해합)

문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 해설 분해합이 생성자 + 생성자의 각 자릿수이기 때문에 1부터 각 자릿수를 더해보면서 입력값 n과 같아지는 때를 찾으면 된다. 생성자가 여러개인 경우 가장 작은 생성자만 찾으라고 했으니 모든 생성자를 찾고 그 중에 가장 작은 수만 출력하는 것이 아니라 처음부터 가장 작은 생성자만 찾으면 된다. 1부터 시작이기 때문에 생성자를 찾으면 가장 작은 생성자가 되므로 그 ..

알고리즘/백준 2023.05.23

[파이썬] BOJ_8958(OX퀴즈)

문제 https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 해설 O가 연속해서 나오면 해당 문제의 점수는 연속된 O의 개수가 되기 때문에 다음 문제가 정답(O)인지 / 오답(X)인지 체크해야 한다. 쉽게 O의 개수를 체크하는 변수를 만들어 연속되면 +1을 해주고 그렇게 만들어진 변수의 값을 총 점수를 구하는 변수에 더해주면 된다. 코드 -파이썬 #백준 8958(OX퀴즈) n = int(input()) for i in range(n..

알고리즘/백준 2023.05.21

[파이썬] BOJ_17608(막대기)

문제 https://www.acmicpc.net/problem/17608 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 해설 가장 뒤의 막대기는 항상 보여지기 때문에 cnt를 1로 초기화 해준다. 뒤부터 비교하면서 더 큰 막대기가 나오면 cnt를 +1해주고 비교값인 stick을 해당 막대기로 바꿔 비교해나간다. 이렇게 해야 큰 막대기 뒤에 가려지는 막대기들을 가려낼 수 있다. 코드 -파이썬 #백준 17608(막대기) import sys input = sys.stdin.readline n = int(input()) ..

알고리즘/백준 2022.11.07

[파이썬] BOJ_1212(8진수 2진수)

문제 https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 해설 https://www.ibm.com/docs/ko/aix/7.1?topic=adapters-ascii-decimal-hexadecimal-octal-binary-conversion-table ASCII, 10진수, 16진수, 8진수, 2진수 변환표 이 테이블에서는 ASCII, 10진수, 16진수, 8진수, 2진수 값 변환에 도움이 되는 정보를 참조할 수 있습니다. 표 1. ASCII, 10진수, 16진수, 8진수, 2진수 값 사이의 변환 ASCII 10진수 16진수 8진수 2진 널(null) ..

알고리즘/백준 2022.08.13

[파이썬] BOJ_2745(진법 변환)

문제 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 해설 이 문제는 파이썬에서 제공하는 int함수를 사용하면 쉽게 풀 수 있지만 그래도 진수 변환 방법만 알면 간단한 알고리즘으로 풀 수 있어서 작성해보았다. 2진수를 10진수로 변경해보았다. 위 방법처럼 계산만 해주면 된다. 우선 받은 문자를 역순으로 뒤집어 주면 편하다. 알파벳인지 숫자인지 구분한 다음, 알파벳이라면 실제 아스키 코드 값에선 A가 65이지만 문제에선 10으로 하기로 했으니 55..

알고리즘/백준 2022.08.12

[파이썬] BOJ_11656(접미사 배열)

문제 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 해설 문자열을 앞에서부터 하나씩 제거해서 리스트에 넣어주면 된다. 코드 -파이썬 #백준 11656(접미사 배열) s = input() arr = [] while True: arr.append(s) s = s[1:] #문자열 첫 글자 제거 if len(s) == 0: break arr.sort() for i in arr: print(i)

카테고리 없음 2022.07.22

[파이썬] BOJ_10866(덱)

문제 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 문제 제목대로 덱을 이용하여 풀면 된다. 코드 -파이썬 #백준 10866(덱) from collections import deque import sys n = int(sys.stdin.readline()) deq = deque() for i in range(n): x = sys.stdin.readline().split() if x[0] == 'push_front': de..

알고리즘/백준 2022.06.10

[파이썬] BOJ_10828(스택)

문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 이 문제는 가장 기본적인 스택 문제이다. 코드 -파이썬 #백준 10828(스택) import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): x = sys.stdin.readline().split() if x[0] == "push": stack.append(x[1]) if x[0] == "pop": if..

알고리즘/백준 2022.05.24
728x90
반응형