알고리즘
-
250310_백준 알고리즘 #1157. 단어 공부알고리즘 2025. 3. 10. 18:02
문제https://www.acmicpc.net/problem/1157 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.코드from collections import Counterword = input().upper()word_count = Counter(word)max_val = max(word_count.values())cnt = l..
-
250310_백준 알고리즘 #2292. 벌집알고리즘 2025. 3. 10. 16:26
문제https://www.acmicpc.net/problem/2292 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 코드N = int(input())i = 1start = 1whil..
-
250308_백준 알고리즘 #5073. 삼각형과 세 변알고리즘 2025. 3. 8. 01:01
문제https://www.acmicpc.net/problem/5073 삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.Equilateral : 세 변의 길이가 모두 같은 경우Isosceles : 두 변의 길이만 같은 경우Scalene : 세 변의 길이가 모두 다른 경우단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오. 입력 각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산..
-
250308_백준 알고리즘 #23971. ZOAC 4알고리즘 2025. 3. 8. 00:58
문제https://www.acmicpc.net/problem/23971 2021년 12월, 네 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 오프라인 대회를 대비하여 강의실을 예약하려고 한다.강의실에서 대회를 치르려면 거리두기 수칙을 지켜야 한다!한 명씩 앉을 수 있는 테이블이 행마다 W개씩 H행에 걸쳐 있을 때, 모든 참가자는 세로로 N칸 또는 가로로 M칸 이상 비우고 앉아야 한다. 즉, 다른 모든 참가자와 세로줄 번호의 차가 N보다 크거나 가로줄 번호의 차가 M보다 큰 곳에만 앉을 수 있다.논문과 과제에 시달리는 성우를 위해 강의실이 거리두기 수칙을 지키면서 최대 몇 명을 수용할 수 있는지 구해보자. 입력 H, W, N, M이 공백으로 구분되어 주어진다. (0 H, W, N, M ≤ 50,000) ..
-
250306_프로그래머스 #62048. 멀쩡한 사각형알고리즘 2025. 3. 6. 17:31
문제https://school.programmers.co.kr/learn/courses/30/lessons/62048 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr코드import mathdef solution(w,h): # 전체 면적 answer = w * h # 겹치는 격자점의 수 cnt = math.gcd(w, h) return answer - (w + h - cnt) ※ 당황스럽다.. 이해가 안된다.. 전체 면적에서 겹치는 격자점의 수를 빼는건데, 우선 겹치는 격자점이 최대공약수만큼 반복된다는 점은 ok. 그래서 math.gcd() 이용해서 최대공약수를 구..
-
250306_프로그래머스 #134239. 우박수열 정적분알고리즘 2025. 3. 6. 01:12
문제https://school.programmers.co.kr/learn/courses/30/lessons/134239 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr코드def solution(k, ranges): answer = [] n = 0 # 숫자의 변화를 담기 num = [k] while True: if k == 1: break if k % 2 == 0: k //= 2 else: k = k * 3 + 1 n += 1 ..
-
250304_프로그래머스 #12946. 하노이의 탑알고리즘 2025. 3. 4. 21:42
문제https://school.programmers.co.kr/learn/courses/30/lessons/12946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr코드def hanoi(n, start, end, via, result): if n == 1: result.append([start, end]) return hanoi(n - 1, start, via, end, result) # 1단계: n - 1개의 원반을 보조 기둥(via)로 이동 result.append([start, end]) # 2단계: 가장 큰 원반을 목표 기둥(end)으로 이동 hano..
-
250303_프로그래머스 #12905. 가장 큰 정사각형 찾기알고리즘 2025. 3. 3. 17:08
문제https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr코드def solution(board): n = len(board) m = len(board[0]) dp = [[0] * m for _ in range(n)] max_side = 0 # 가장 큰 정사각형의 한 변 길이 for i in range(n): for j in range(m): if board[i][j] == 1: if i == 0 or j =..