728x90
반응형

브론즈2 10

[파이썬] BOJ_2605(줄 세우기)

문제 https://www.acmicpc.net/problem/2605 2605번: 줄 세우기 점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 www.acmicpc.net 해설 이 문제의 핵심은 뽑은 번호대로 그 위치에 줄을 선다는 것이다. 리스트의 insert()를 이용하면 특정 위치에 요소를 삽입할 수 있다. 번호의 순서가 제일 오른쪽이 가장 빠른 번호가 위치 하기 때문에 리스트를 역순으로 뒤집어서 출력해주면 끝이다. 코드 -파이썬 #백준 2605(줄 세우기) n = int(input()) #학생 수 num = [*map(int, input().split())..

알고리즘/백준 2023.06.11

[파이썬] 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_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_13300(방 배정)

문제 www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 www.acmicpc.net 해설 같은 성별끼리, 같은 학년끼리만 방을 쓸 수 있다는 규칙만 체크하면 그렇게 어렵지 않은 문제이다. 학년별 인원수가 따로 주어지는 게 아니라 인원수 만큼 입력을 통해 주어지기 때문에 입력을 받을 때 마다 리스트에 따로 학년별 인원수를 체크해주는 게 좋다. 리스트에 인원수 체크가 끝나면 한 방에 배정 가능한 최대 인원수로 맞게 떨어지는 지를 체크해야 한다. 학년 별로 배정 인원..

알고리즘/백준 2021.03.04

[파이썬, 자바] BOJ_18238(ZOAC 2)

문제 https://www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net 해설 이 문제는 왼쪽 / 오른쪽 중 빠른 쪽의 값을 구하면 된다. 다양한 방법으로 풀 수 있지만 이번에는 아스키 코드 값을 사용해서 풀어보았다. (A ~ Z를 리스트에 담아놓고 푸는 방법을 사용할 수도 있다) 원판을 왼쪽으로 돌릴지, 오른쪽으로 돌릴지에 따라 아스키코드 값을 계산해주면 된다. 주의할 점은, 계산한 값이 음수가 되면 알파벳 개수인 26을 더해줘야 제대로 된 값을..

알고리즘/백준 2021.02.02

[파이썬, 자바] BOJ_3052(나머지)

문제 https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 해설 이 문제는 파이썬으로 푼다면 굉장히 간단하게 풀 수 있는 문제이다. 그저 리스트와 리스트 중 중복된 값을 지워주는 set() 함수만 사용할 줄 알면 된다. 자바는 for each 루프나 for문으로 중복되지 않은 수만 따로 arrayList에 넣어주면 된다. 코드 -파이썬 #백준 3052(나머지) num_list = [] for _ in range(10): num = int(input()) num_list.append(num % 42) num_list = ..

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