
안녕하세요. 백준 알고리즘을 처음부터 꾸준하게 작성하여 문제 풀이 진행해보려고 합니다 !
단계가 하나 끝날 때 마다 대회에 있는 문제들도 한번 씩 풀려고 노력하고 있습니다 !
제가 사용하는 언어는 Python 입니다 !
문제
앞으로 맞이할 새천년을 기념하며 지은 새천년관. 건물 이름을 정한 지 천 년이 지나, 어느덧 3000년이 되었다. 이제 새천년관에 새로운 이름이 필요하다!
쿠는 아래 조건을 모두 만족시키는 새로운 이름을 지어주려고 한다.
- 건물 이름은 알파벳 소문자로만 이루어져야 한다.
- 건물 이름의 맨 앞 글자와 맨 뒤 글자는 같은 글자여야 한다.
- 건물 이름에 알파벳 k와 u가 포함되어 있어야 한다.
- 건물 이름의 마지막 4글자는 gwan이어야 한다.
- 건물 이름의 길이가 50보다 짧거나 같아야 한다.
쿠는 너무 바빠서 건물 이름을 정하지 못했다. 쿠를 대신해서 조건을 모두 만족시키는 건물 이름을 지어주자.
입력
입력은 없다.
출력
주어진 조건을 모두 만족시키는 건물 이름을 아무거나 하나 출력한다.
문제풀이 1.
def name():
while True:
result = "n" + randomName() + "gwan"
if {'k', 'u'}.issubset(result):
return result
def randomName():
import random
import string
return ''.join(random.choice(string.ascii_lowercase) for _ in range(random.randint(0, 45)))
print(name())
1. def() : name, randomName이란 함수 생성
2. while : 우측에 있는 조건이 만족할 때 무한 반복 / 만족하지 않을 때 종료
3. "n" + randomName() + "gwan" : 문제에서 맨 처음 문자는 맨 뒷자리("n")와 동일하게 진행하랬으니 고정값으로 넣어뒀고 중간에 있는 값은 randomName() return 값을 저장 맨 마지막 4글자는 "gwan"로 넣고 싶다고 하여서 고정으로 추가
4. import random, string (모듈을 사용하려고 선언)
5. ''.join() : join안에 선언한 것들에 대한걸 ''로 구분
ex) ''.join(['a','b','c']) = 'abc' // '-'.join(['a','b','c']) = 'a-b-c'
6. random.choice() : 선언된 값중에서 랜덤값 하나를 추출
7. string.ascii_lowercase : 영어 소문자를 전부 다 갖고 있는 문자열
ex) 'abcdefghijklmnopqrstuvwxyz'
8. range() : 인자값이 하나라면 end로 지정
9. random.randint(0, 45) : 0~45중 하나의 int형 정수를 추출
10. issubset() : result라는 문자열에 k와 u라는 값이 있는지 비교하여 참, 거짓 판단
11. k와 u까지 전부 있다면 return 하여 print()에서 해당 result값을 출력
유의사항
1. range(start, end, step)는 인자값이 하나라면 end로 인식
: range(5) == range(0,5) => 0, 1, 2, 3, 4
2. string 모듈을 아래와 같이 사용 가능
2-1. 영어 대문자: string.ascii_uppercase
2-2. 영어 소문자: string.ascii_lowercase
2-3. 영어 대소문자: string.ascii_letters
2-4. 숫자: string.digits
2-5. 특수문자: string.punctuation
3. issubset() 메서드는 집합(set) 자료형에서 사용하고 한 집합이 다른 집합의 부분집합(subset)인지 확인할 때 사용
: 파이썬에서는 set의 issubset() 메서드는 집합뿐만 아니라 문자열, 리스트, 튜플 등 반복 가능한(iterable) 객체와도 비교할 수 있습니다.
문제 내용 스크린샷

문제 소스 스크린샷

제출 스크린샷

감사합니다.
'알고리즘(백준)' 카테고리의 다른 글
| [백준] 조건문 > 9498 : 시험 성적 (Python) (0) | 2025.05.13 |
|---|---|
| [백준] 조건문 > 1330 : 두 수 비교하기 (Python) (0) | 2025.05.13 |
| [백준] 입출력과 사칙연산 > 10172 : 개 (Python) (0) | 2025.05.11 |
| [백준] 입출력과 사칙연산 > 10171 : 고양이 (Python) (0) | 2025.05.11 |
| [백준] 입출력과 사칙연산 > 11382 : 꼬마 정민 (Python) (1) | 2025.05.11 |
댓글