백준 10

[백준/Python]9417번: 최대 GCD

1. 문제 9417번: 최대 GCD 첫째 줄에 테스트 케이스의 개수 N (1 < N < 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 양의 정수 M (1 < M < 100)개가 주어진다. 모든 수는 -231보다 크거나 같고, 231 -1보다 작거나 www.acmicpc.net 2. 해결방법 - 문제에서 큰 힌트를 직접 주었다. GCD 알고리즘을 이용하자 ! - 우선 우리가 구해야할 값은 두 쌍의 GCD의 최댓값이다. 각 테스트 케이스에서 주어진 수 중 2쌍씩 묶자 → 2중 for 문을 사용하고 중복은 제거해주었다. 묶은 2쌍들의 최대 공약수(GCD)를 구한 뒤 →유클리드 알고리즘 최댓값을 출력 ! 3. 코드 n = int(input()) numList = [list(map(int,i..

[알고리즘]/BOJ 2023.03.21

[백준/Python] 18870번: 좌표 압축

1. 문제 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 글만 읽어봤을 땐 이게 뭔말인고 .. 싶었다. 그래서 예제를 적어보고 스스로 답을 찾아보는 과정에서 알고리즘에 대해서 떠올랐다. 브론즈에서는 그냥 무작정 코드를 짜면 풀리는 문제가 많았는데 실버단계 문제부터는 이해가 중요한 문제가 많이 나오는 것 같다. 스스로 예제에 대한 답을 내려보는 과정을 습관들여야겠다. 2. 해결 해결방법을 떠올리는 것은 어렵지 않다. X1, X2, ... 을 배열로 두고 ** 중..

[알고리즘]/BOJ 2023.03.01

[백준/Python] 7568번: 덩치 (BruteForce)

1.문제 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 2. 해결 - 고민이 많이 되었던 문제이다. 버블 정렬을 통해 하나씩 정렬해볼까도 생각해봤는데 .. - 계속 안되다가 힌트를 보고 BruteForce를 이용해보아야겠다 .. ~ 고 생각했다. ** BruteForce Algorithm -비교대상 문자열을 처음부터 끝까지 모두 순회하면서 비교하는 알고리즘 그렇다 .. n개의 덩치들(?)을 나머지 n-1개와 비교해서 본인보다 큰 덩치의 수를 알면 끝나는 문제.. ! 3. 코드 n = int(in..

[알고리즘]/BOJ 2023.02.28

[백준/Python] 8979: 올림픽

1. 문제 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 2. 해결 - 우선 얻은 금메달, 은메달, 동메달 수의 순서대로 리스트를 정렬한다. - sort, lambda함수를 이용하여 정렬하였다. - 등수를 찾을 때 for 문을 돌며 n과 함께 주어진 국가번호 k의 index(정렬한 리스트의 등수 -1) 를 찾는다. - 등수가 중복되는 국가의 공동 등수를 지정하기 위해 for문을 돌며 k국가의 모든 메달 수 가 같은 국가가 나오면 그 국가의 (index+1)등이므로 출력해준다. 3. 코드..

[알고리즘]/BOJ 2023.02.25

[백준/Python] 15905번: 스텔라(STELLA)가 치킨을 선물했어요 (람다함수 정렬)

1. 문제 15905번: 스텔라(STELLA)가 치킨을 선물했어요 경인지역 6개대학 연합 프로그래밍 경시대회 shake! 는 아주대학교, 경희대학교, 성균관대학교, 인하대학교, 한국항공대학교, 한양대학교ERICA가 함께하는 대학교 자체 연합 대회이다. shake! 는 매 www.acmicpc.net 2. 문제해결 정렬문제이다. 문제는 정렬해야할 대상이 2개라는 것 이때 문제해결을 쉽게 할 수 있는 함수가 바로 람다함수이다. 람다함수에 대해서는 아래 자세하게 설명하겠다 생각해본 알고리즘 - 입력받은 참가자들의 해결한 문제 수와 패널티 총 합을 입력받고 playes(이중 리스트)에 넣기 - playes를 해결한 문제 수 내림차순, 패널티 총 합 오름차순으로 정렬하기 - playes에서 5등의 해결한 문제 수..

[알고리즘]/BOJ 2023.02.24

[백준/Python] 10798번 : 세로읽기

1.문제 https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 2. 풀이 해결과제 : 5줄의 단어를 세로로 읽어내야한다. 이 과정을 위해서는 단어를 반복하며 첫번째 열부터 마지막열까지 읽어내야하는데 .. 단어의 길이만큼 5번씩 반복을해야한다. 그런데 이때 문제가 발생했다. 길이가 다른 5개의 단어를 받아오기 때문에 오류가 생긴다는 점 ! 그 문제를 방지하기 위해 if문을 사용한다. 3. 코드 lines= [] length = [] # 입력받는..

[알고리즘]/BOJ 2023.02.21

[백준/Python] 기초 10제 - Day3

1. 20540번 https://www.acmicpc.net/problem/20540 20540번: 연길이의 이상형 졸업을 앞둔 연길이는 크리스마스가 다가올수록 외로움을 느낀다. 그런 연길이를 위해 동우는 소개팅을 시켜주지는 않고 연길이의 이상향을 찾는 것을 도와주고자 한다. MBTI 신봉자인 연길이는 www.acmicpc.net yongil = list(input()) ideal=[] if yongil[0] == 'E': ideal.append('I') else: ideal.append('E') if yongil[1] =='N': ideal.append('S') else: ideal.append('N') if yongil[2] =='F': ideal.append('T') else: ideal.appen..

[알고리즘]/BOJ 2023.02.14

[백준/python] 11286번 절댓값 힙

1. 문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 2. 힙(Heap) 힙이란 특정한 규칙을 가지며 완전이진트리을 기본으로 한다. 최댓값, 최솟값 연산을 빠르게 하기 위해 사용된다 ! 이 문제에서도 절댓값의 최솟값부터 출력하라고 했다 ! 파이썬의 heapq 모듈로 힙 자료구조 사용하기 Engineering Blog by Dale Seo www.daleseo.com 모듈에 관한 코드는 이 링크를 통해 참조하고 ..

[알고리즘]/BOJ 2023.02.02

[백준/Python] 11179 2진수 뒤집기/파이썬 이진수 표기

1. 문제 11179번: 2진수 뒤집기 희연이는 스웨덴으로 이사하여 현재 학교를 다니고 있다. 1학년 교육과정은 중국에서 배웠고, 스웨덴과 중국 두 나라의 교육과정은 완전히 다르다. 희연이는 수학을 좋아한다. 하지만 지금은. www.acmicpc.net 입력받은 n을 2진법으로 나타낸 뒤, 2진법을 나타낸 수를 뒤집는다. 그리고 그 수를 다시 10진법으로 변환시켜 출력하는 문제이다. 2. 배경지식 - 문자열 뒤집기는 이전 포스팅 배경지식에서 다루어보았다. [백준/Python] 13410 거꾸로 구구단/[파이썬]문자열 반대로 출력 1. 문제 N단 ,1~K까지 K개의 항이 주어진다. 이때 N*1, N*2, N*3 .. N*K까지의 항 각각을 뒤집어 그 중 가장 큰 값을 출력한다. 2. 배경지식 문자열 뒤집기..

[알고리즘]/BOJ 2022.08.02

[백준/Python] 13410 거꾸로 구구단/[파이썬]문자열 반대로 출력

1. 문제 N단 ,1~K까지 K개의 항이 주어진다. 이때 N*1, N*2, N*3 .. N*K까지의 항 각각을 뒤집어 그 중 가장 큰 값을 출력한다. 2. 배경지식 문자열 뒤집기 1. for 문 str='Hello JaeGyeong' reverse_str='' for temp in str: #temp는 str의 문자 하나씩 빼옴 reverse_str=temp+reverse_str # 빼온 문자를 하나씩 붙임 print(reverse_str) 2. reverse() str= 'Hello JaeGyeong' list_str=list(str) print(list_str) list_str.reverse() print(list_str) print(''.join(list_str)) #리스트를 문자열로 3. 문자열 ..

[알고리즘]/BOJ 2022.08.02