Home 백준 - 2929. 음계, 2675. 문자열반복 (MJ)
Post
Cancel

백준 - 2929. 음계, 2675. 문자열반복 (MJ)

# 2920. 음계

백준브론즈2티어 문제들이다.

📖Probelm

다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, …, C를 8로 바꾼다.

1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.

연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.

입력

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.

예제 1

1
2
1 2 3 4 5 6 7 8
ascending

예제 2

1
2
8 7 6 5 4 3 2 1
descending

예제 3

1
2
8 1 7 2 6 3 5 4
mixed

🔍Solve

  • 문자열을 입력받는다.
  • 주어진 조건은 3가지다. ascending, descending, mixed!
    • ascending : 입력받은 문자열과 문자열을 오름차순으로 정렬한 것이 같은지 비교한다.
    • descending : 입력받은 문자열과 그 문자열을 내림차순으로 정렬한 것이 같은지 비교한다.
    • mixed : 위의 2가지의 경우가 아닐 경우, mixed를 출력한다.
1
2
3
4
5
6
7
8
num = list(map(int, input().split()))

if num == sorted(num):
    print("ascending")
elif num == sorted(num, reverse=True):
    print("descending")
else:
    print("mixed")
  • 이 문제를 통해 새롭게 알게 된 것은 내림차순으로 정렬하는 것이다.
  • sorted(list_name, reverse=True) : 내림차순으로 정렬
  • 시간 복잡도 : $O(1)$
  • 공간 복잡도 : $O(1)$

#2675. 문자열 반복

📖Probelm

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code “alphanumeric” 문자만 들어있다.

QR Code “alphanumeric” 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.

출력

각 테스트 케이스에 대해 P를 출력한다.

예제 입력 1

1
2
3
2
3 ABC
5 /HTP

예제 출력 1

1
2
AAABBBCCC
/////HHHHHTTTTTPPPPP

🔍Solve

  • testcase를 입력받는다.
  • 반복할 횟수를 나타내는 r과 문자열을 나타내는 s를 공백을 구분으로 입력받는다.
  • s는 for문을 돌면서 각 i를 입력 받은 r만큼 반복한다.
1
2
3
4
5
6
7
testcase = int(input())
for _ in range(testcase):
    r, s = input().split() # r: 반복횟수, s : 문자열
    text = ""
    for i in s:
        text += int(r) * i
    print(text)
  • 처음엔 R을 기준으로 for문을 반복했는데 오류가 났다. 그래서 확실한 방법인 int형을 더하는 식으로 했다.
  • 시간 복잡도 : $O(n^2)$
  • 공간 복잡도 : $O(1)$

💡Conclusions

This post is licensed under CC BY 4.0 by the author.

백준 - 1157. 단어 공부 (MJ)

LeetCode - 150. Evaluate Reverse Polish Notation (MJ)