백준 11478. 서로 다른 부분 문자열의 개수 (파이썬) 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net # [BOJ] S3> 11478. 서로 다른 부분 문자열의 개수 import sys from itertools import combinations input = sys.stdin.readline s = input() idx = [x for x in range(len(s))] comb = list(combinations(idx, 2)) ans = set() for c in comb: a = s[c[0]:c[1]] ans.add(a) print(len(ans)) ans에 저장하..
백준 9742. 순열 (파이썬 / 자바) 9742번: 순열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전 www.acmicpc.net 파이썬 EOF 어떻게하는지 아주 까먹었었다 입력이 정렬되어 주어져서 순열 구현만 하고 카운트만 제대로 해 주면 됨 def perm(r): global cnt if r == len(a): cnt += 1 if cnt == int(b): print(''.join(selected)) return for i in range(len(a)): if visited[i]: continue selected[r] = a[i] visited[i]..
정올 1828. 냉장고 (자바) JUNGOL www.jungol.co.kr N개의 화학 물질 C1, C2, …, Cn이 있다. 이들 각각은 보관되어야 할 온도가 각기 다른데, 각 Ci마다 최저 보관 온도 xi와 최고 보관 온도 yi가 정해져 있다. 즉 Ci는 온도 xi이상, yi이하의 온도에서 보관되어야만 안전하다. 이 화학 물질들을 모두 보관하기 위해서는 여러 대의 냉장고가 필요한데 가능하면 적은 수의 냉장고를 사용하고 싶다. 이를 해결하는 프로그램을 작성하시오. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class J1828 { p..
백준 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..
백준 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]..
백준 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개 ..