본문 바로가기

Algorithm/BOJ54

[BOJ] 1759. 암호 만들기 (Python / Java) 백준 1759: 암호 만들기 (파이썬 / 자바) 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 정렬한 후 조합을 만들어 조합 안의 자음과 모음 개수를 센다 자바는 문자열 정렬을 할 줄 몰라서 아스키코드로 바꾼 후 정렬했음 파이썬 def combination(l, start): if l == L: v, c = 0, 0 for s in selected: if s in vowels: v += 1 else: c += 1 if v >= 1 and c >= 2: print(''.join(selected)) return fo.. 2023. 3. 17.
[BOJ] 17608. 막대기 (python / Java) 백준 17608 막대기 파이썬 자바 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net # 파이썬: 단순 계산 - sys 안 쓰고 input으로 처리하면 시간 초과! 주의 import sys N = int(sys.stdin.readline()) L = list(int(sys.stdin.readline()) for _ in range(N)) ans = 1 max = L[-1] # 오른쪽부터 하나씩 최대값 변경해가면서 탐색 for x in range(N - 1, -1, -1): if L[x] > max: max = L[x].. 2023. 3. 14.
[BOJ] 10986. 나머지 합 (Java / Python) 백준 10986: 나머지 합 (자바/파이썬) 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 이걸.. 내가 풀었다고 해도 되나요? 1. 모듈러 연산 이용하기(A + B) % M = ((A % M) + (B % M)) % M - 이 문제에서 찾아야 하는 것(A - B) % M = 0 - 그렇다면 이용해야 하는 것(A % M) - (B % M) = 0(A % M) = (B % M) 누적합의 나머지를 구한 후모듈러 연산을 이용할 수 있는, 즉 같은 나머지를 가진 2개 .. 2023. 3. 12.
[BOJ] 12933. 오리 (python) 백준 12933. 오리 (파이썬) 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net # [BOJ] 12933. 오리 2023-03-09 S = input() ans = 0 A = [] L = ['0', 'q', 'u', 'a', 'c', 'k'] for i in range(len(S)): s = S[i] if L.index(s) == 1: # q가 나온 경우 t = 1 for j in range(len(A)): if L.index(A[j][-1]) == 5: A[j] += s t = 0 break if t == 1: A.append(s.. 2023. 3. 10.
[BOJ] 11660. 구간합 구하기 5 (Java) 백준 11660. 구간합 구하기 5 (자바) 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 과 같은 예시를 1 3 6 10 3 5 15 24 6 15 27 42 10 24 42 64 로 받아가며 저장하면 된다. 내가 필요한 현재 셀의 값: 새로 더할 수 + 전 행 같은 열 + 같은 행 전 열 - 전 행 전 열 예) 64(a2-3, 3) = 7(a1-3, 3) + 42(a2-2, 3) + 42(a2-3, 2) -.. 2023. 3. 9.
[BOJ] 1417. 국회의원 선거 (python) 백준 1417 국회의원 선거 (파이썬) 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net N = int(input()) D = int(input()) L = [int(input()) for _ in range(N - 1)] ans = 0 while L:# while 1로 할 경우 전체 주민이 1명일 때 오류 발생 L = sorted(L, reverse=True) # 가장 큰 값과 계속 비교 if L[0] >= D: D += 1 ans += 1 L[0] -= 1 else: break print(ans) 2023. 2. 7.
728x90