728x90

 

안녕하세요!

 

오늘은 백준 문제 중에서 비교적 쉬운 문제로 꼽히는 **2675번 '문자열 반복'**을 풀어보겠습니다.

 

이 문제는 문자열을 주어진 횟수만큼 반복하여 출력하는 간단한 구현 문제입니다. 파이썬을 활용해 쉽게 접근할 수 있어요.

 

문제 설명

  • 각 테스트 케이스마다 주어진 문자열의 각 문자를 반복하여 새로운 문자열을 만드는 것이 목표입니다.
  • 입력으로는 몇 번 반복할 것인지와 문자열이 주어집니다.
  • 예를 들어, 3번 반복할 때 문자열이 "ABC"라면 "AAABBBCCC"가 출력되어야 합니다.

입력 형식

  1. 첫 번째 줄에는 테스트 케이스의 개수 T가 주어집니다.
  2. 각 테스트 케이스는 반복 횟수 R과 문자열 S로 구성됩니다.

출력 형식

  • 각 테스트 케이스마다 문자열 S의 각 문자를 R번 반복한 결과를 한 줄에 출력해야 합니다.

 

파이썬 코드 풀이

 

 

def repeat_string():
    t = int(input())
    for _ in range(t):
        r, s = input().split()
        r = int(r)
        result = ''.join([char * r for char in s])
        print(result)

if __name__ == "__main__":
    repeat_string()

 

코드 설명

  1. t = int(input()) : 테스트 케이스의 개수를 입력받습니다.
  2. for _ in range(t): : 입력된 테스트 케이스 수만큼 반복합니다.
  3. r, s = input().split() : 반복 횟수 r과 문자열 s를 입력받아 각각 변수에 저장합니다.
  4. r = int(r) : 반복 횟수를 정수형으로 변환합니다.
  5. result = ''.join([char * r for char in s]) : 문자열의 각 문자를 r번 반복하고 이를 join() 함수를 사용해 하나의 문자열로 결합합니다.
  6. print(result) : 최종적으로 반복된 문자열을 출력합니다.

 

감사합니다

728x90
반응형
728x90

 

문제 설명 요약

  • 듣도 못한 사람의 명단이 N개, 보도 못한 사람의 명단이 M개 주어집니다.
  • 이 두 명단에 모두 속하는 이름을 사전 순으로 출력하는 것이 목표입니다.

접근 방법

  1. 데이터 저장: 듣도 못한 사람의 명단을 Set 자료구조에 저장하여 중복 처리를 간단하게 합니다. 파이썬의 Set은 해시 구조를 활용하여 원소의 탐색이 평균 O(1)에 가능하기 때문에 효율적입니다.
  2. 교집합 연산: 보도 못한 사람의 명단도 입력받고, 이를 Set로 변환하여 두 집합 간의 교집합을 구합니다. 이 방법으로 두 명단에 중복된 이름을 쉽게 찾을 수 있습니다.
  3. 결과 정렬 및 출력: 교집합으로 구한 이름들을 정렬하여 요구사항대로 출력합니다.

코드 구현

다음은 파이썬으로 구현한 코드입니다:

 

n, m = map(int, input().split())
heard = set()

# 듣도 못한 사람의 명단 입력
for _ in range(n):
    heard.add(input().strip())

# 보도 못한 사람의 명단 입력 및 교집합 계산
total = set()
for _ in range(m):
    name = input().strip()
    if name in heard:
        total.add(name)

# 결과 출력
result = sorted(total)
print(len(result))
for name in result:
    print(name)

주요 포인트

  • Set 자료구조 사용: 중복된 데이터를 효율적으로 처리하기 위해 파이썬의 Set을 사용하였습니다. 이는 듣도 못한 명단에서 보도 못한 사람을 찾을 때 매우 효과적입니다.
  • 시간 복잡도: 두 리스트의 길이를 각각 N, M이라 하면, 이 코드는 평균적으로 O(N + M)의 시간 복잡도를 가집니다. 이는 해시 테이블 기반의 Set 자료구조 덕분에 가능하며, 일반적인 리스트 탐색에 비해 훨씬 빠릅니다.

정리

이 문제는 두 집합 간의 교집합을 구하는 간단한 문제처럼 보이지만, Set을 활용한 효율적인 접근이 가능하다는 점에서 중요한 학습 포인트를 제공합니다. 특히, 해시 기반의 데이터 구조가 어떻게 효율성을 크게 향상시키는지를 직접 체험할 수 있습니다. 블로그에서는 이 문제를 통해 집합 연산의 유용성해시 구조의 효율성을 강조하는 방향으로 작성하면 좋을 것 같습니다.

이제 블로그에 이 문제를 소개할 때 어떤 추가적인 내용이나 스타일을 고려하고 싶으신가요? 예를 들어, 개인적인 경험이나 이 문제를 통해 배운 점 등을 추가하면 더 흥미로운 포스팅이 될 것 같습니다.

728x90
반응형
728x90

 

문제 소개

백준 1436번 문제는 '숌' 감독이 좋아하는 숫자인 '666'이 포함된 영화 제목을 찾는 문제입니다. 간단히 말해, '666'이 연속적으로 포함된 숫자들을 찾는 것이 목표입니다. 예를 들어, 첫 번째 영화 제목은 666, 두 번째 영화 제목은 1666, 세 번째는 2666입니다. 이렇게 '666'이 들어가는 숫자를 순서대로 나열해 찾는 과정이 필요합니다.

문제 접근 방법

이 문제를 해결하기 위해서는 숫자를 하나씩 증가시키며 '666'이 포함되는지를 확인해야 합니다. 단순히 1부터 시작해 조건에 맞는 숫자를 찾을 때까지 반복하면 해결할 수 있죠. 이 과정에서 중요한 점은 어떤 데이터 구조나 알고리즘의 사용보다는, 반복문을 어떻게 효율적으로 작성하는가에 있습니다.

제가 사용한 접근 방법은 다음과 같습니다:

  1. 숫자 증가시키기: 시작은 666부터 합니다. 숫자를 하나씩 증가시키면서 '666'이 포함되는지를 체크합니다.
  2. '666' 포함 여부 확인: 파이썬에서는 문자열의 부분 문자열을 손쉽게 확인할 수 있기 때문에, 이를 이용해 조건을 만족하는 숫자를 찾습니다.
  3. N번째로 찾기: 문제에서 주어진 N번째 제목을 찾기 위해, 조건을 만족할 때마다 카운트를 증가시키고, 원하는 값에 도달하면 출력합니다.

코드 구현

n = int(input())
count = 0
num = 666

while True:
    if '666' in str(num):
        count += 1
        if count == n:
            print(num)
            break
    num += 1

 

이 코드의 핵심은 while 루프를 사용해 모든 숫자를 순차적으로 검사하는 것입니다. if '666' in str(num) 구문을 통해 현재 숫자가 '666'을 포함하고 있는지 여부를 확인할 수 있습니다. 조건을 만족할 때마다 카운트를 증가시키고, N번째 숫자에 도달하면 결과를 출력하는 방식입니다.

문제 해결 후 느낀 점

이 문제는 알고리즘의 복잡함보다는 기본적인 반복과 조건 확인을 얼마나 정확하게 구현할 수 있는지를 테스트하는 문제입니다. 코드를 작성하면서 '단순 반복문'이 얼마나 강력한 도구인지를 다시금 느꼈습니다. 또한, 문자열 조작이 문제 해결에 얼마나 유용한지를 깨닫게 되었죠.

728x90
반응형
728x90

 

1

 

https://www.acmicpc.net/problem/1157

 


 

문제

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

 


 

[ 테스트 코드 ]

x = input()

xList = list(x.upper())

print(xList)

# 주어진 리스트
letters = ['M', 'I', 'S', 'S', 'I', 'S', 'S', 'I', 'P', 'I']

# 빈 딕셔너리로 개수 세기
counts = {}

for letter in letters:
    counts[letter] = counts.get(letter, 0) + 1

# 중복된 값 추출
duplicates = {key: value for key, value in counts.items() if value > 1}

print(duplicates)  # 출력: {'I': 4, 'S': 4}


data = input().upper()

max_char = max(set(data), key=data.count)
max_count = data.count(max_char)

if sum(1 for char in set(data) if data.count(char) == max_count) > 1:
    print('?')
else:
    print(max_char)

 

여기서 중요했던 요점은 문자를 대문자로 변형하고 중복 값을 체크 하는 것이다.

 

[ 결과 코드 ]

data = input().upper()

max_char = max(set(data), key=data.count)
max_count = data.count(max_char)

if sum(1 for char in set(data) if data.count(char) == max_count) > 1:
    print('?')
else:
    print(max_char)

 

그리고 코드를 조금 더 간결하게 짤 방법을 찾았고

 

요점은

가장 많이 등장하는 문자를 찾고 해당 문자의 수를 체크한다.

그리고  많이 나오는 문자의 수가 여러 개인지 확인하는 것까지 코드로 완성하였다.

728x90
반응형
728x90
[Python]



Python을 Visual Studio Code에서 개발 환경 세팅 하는 방법 알려드리겠습니다.

 

요즘 파이썬으로 코딩 하는 게 재미있어서 집에서 환경 세팅하고 연습 좀 할려고 합니다

코딩 테스트 하기에도 가장 접근성이 좋은 언어라 앞으로도 배워놓으면 참 좋을 것 같습니다.

 

잘 정리했으니

천천히 따라오시면 됩니다~

 


 

1

 

먼저 파이썬 홈페이지 접속해서 Python을 설치해야 합니다.

 

https://www.python.org/

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

 

 

홈페이지에 접근 하시면 자신의 OS 환경에 맞는 것을 선택해주시면 됩니다.

 

 

-

저는 Windows 환경이라 Window 환경으로 다운 받습니다.

 

 

installer 눌러서 다운 받으면 됩니다.

 

그리고 나서 install 해주시면 설치 창이 뜹니다.

 

 

 

/*** Add python.exe to PATH ***/ 이 부분을 추가해주셔야 환경 변수를 추가해주는 겁니다.

 

 

 

Option은 다 선택해주시면 됩니다.

 

 

그리고 파이썬 경로는 편한 곳으로 세팅하는 게 좋습니다.

 

 

그러면 무난하게 파이썬 설치는 다 끝났습니다.


 

2

 

그리고 나서 VS Code 설치를 하도록 하겠습니다.

 

https://code.visualstudio.com/\

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

vs code에 접근해서 다운로드 해줍니다.

 

 

동의하기~!

 

 

/*** PATH 추가 ***/ 여기도 이 부분을 추가해주셔야 환경 변수를 추가해주는 겁니다.

 

 


 

3

 

VS Code 마켓에서 이제 파이썬을 연동해주시면 됩니다.

 

왼쪽에 있는 확장을 눌러주시면 됩니다.

 

그리고 Python Extension Pack을 설치해주시면 끝납니다.

 

 

그리고 VS Code에서 test.py로 

 

"Hello World!" 테스트 해줍니다.

 

 

설치 끝~

 

감사합니다!

728x90
반응형

+ Recent posts

728x90
반응형
728x90
반응형