30. 접미사 배열(11656)
문제.접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열이다.baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다.문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.답:s = input()answer = []for i in range(len(s)): answer.append(s[i:])answer.sort()for i in answer: print(i)어떻게 input()으로 받은 문자열의 맨 앞 글자 한 자씩 빼서 저장..
2024. 9. 23.
29. 네 수(10824)
문제.네 자연수 A, B, C, D가 주어진다. 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성하시오.두 수 A와 B를 합치는 것은 A의 뒤에 B를 붙이는 것을 의미한다. 즉, 20과 30을 붙이면 2030이 된다.답:a, b, c, d = input().split()a = a+bc = c+dprint(int(a)+int(c))너무 쉽다.일단 input을 a, b, c, d 다 받아준다. 그냥 받으면 문자열로 받는다는 것을 기억하자.이후a에 a와 b를 합치게 만든다. (더 정확히 표현하자면 "붙인다"가 된다.) 어차피 문자열로 취급을 하기에, 예를 들어 a가 10이고 b가 20이라면 10과 20을 문자열처럼 합치게 되어서 1020이 된다.c도 똑같다.이후 다 합쳐진 문자열 ..
2024. 9. 22.
27. 문자열 분석(10820), 단어 길이 재기(2743)
문제. 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.답:while True: try: #예외 구문 string = input() answer = [0] * 4 for s in string: if s.islower(): answer[0] += 1 ..
2024. 9. 15.
24. 오등큰수(17299)
문제. 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오등큰수 NGF(i)를 구하려고 한다.Ai가 수열 A에서 등장한 횟수를 F(Ai)라고 했을 때, Ai의 오등큰수는 오른쪽에 있으면서 수열 A에서 등장한 횟수가 F(Ai)보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오등큰수는 -1이다.예를 들어, A = [1, 1, 2, 3, 4, 2, 1]인 경우 F(1) = 3, F(2) = 2, F(3) = 1, F(4) = 1이다. A1의 오른쪽에 있으면서 등장한 횟수가 3보다 큰 수는 없기 때문에, NGF(1) = -1이다. A3의 경우에는 A7이 오른쪽에 있으면서 F(A3=2) 답:from collections import Cou..
2024. 9. 12.
18. 단어 뒤집기(9093)
문제.문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.답:n = int(input())for i in range(n): s = list(input().split()) for j in s: print(j[::-1], end=' ') '''전체 설명'''# a = ['a', 'b', 'c', 'd',..
2024. 9. 4.
15. [12단계] 제목: 브루트 포스 (3~4챕터)
3단계. 정수 a, b, c, d, e, f가 공백으로 구분되어 차례대로 주어진다.문제의 답인 x와 y를 공백으로 구분해 출력한다.답: a, b, c, d, e, f = map(int, input().split())print((c*e-b*f)//(a*e-b*d), (a*f-d*c)//(a*e-b*d))x와 y를 구하려면 연립방정식을 구하면 된다. 구하는 법은 되게 쉽다. x를 구하고 싶으면 y값을 동일하게 만들고 빼주면 되며, y를 구하고 싶으면 x값을 동일하게 만들어주고 빼면 된다. 어차피 정수들은 숫자로 입력이 될 것이라 상관없다.(참고로 for문을 돌리는 방법이 있지만, 이렇게 푸는 게 더 쉽고 효율적)4단계. 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 ..
2024. 8. 28.