모각코 (23)
[Python] 모각코 백준 문제 풀이 1
튼튼한장
2023. 7. 13. 14:29
2023.07.04 🟡
- 11721 열 개씩 끊어 출력하기 ✅
- 1120 문자열 ✅
- 20310 타노스 ✅
- 9086 문자열 ✅
- 1302 베스트셀러 ✅
🟡 11721 열 개씩 끊어 출력하기
import sys
A, B = sys.stdin.readline().split( )
dif = len(B) - len(A) + 1 # B와 A의 길이 차 + 1
loc = [] # 각각의 count를 저장할 배열 생성
for i in range(dif):
count = 0
for j in range(len(A)):
if(A[j] == B[j + i]): #A와 B값을 비교하여 같으면 +1
count += 1
loc.append(count)
print(len(A) - max(loc)) # A의 길이에서 loc의 max값을 빼준다.
🟡 1120 문자열
import sys
A, B = sys.stdin.readline().split( )
dif = len(B) - len(A) + 1 # B와 A의 길이 차 + 1
loc = [] # 각각의 count를 저장할 배열 생성
for i in range(dif):
count = 0
for j in range(len(A)):
if(A[j] == B[j + i]): #A와 B값을 비교하여 같으면 +1
count += 1
loc.append(count)
print(len(A) - max(loc)) # A의 길이에서 loc의 max값을 빼준다.
🟡 20310 타노스
S = list(map(int, input()))
count1 = 0
count0 = 0
for i in range(len(S)):
if S[i] == 0:
count0 += 1
else:
count1 += 1
count1 //= 2 # 지워야할 1의 개수
count0 //= 2 # 지워야할 0의 개수
# 1은 앞의 값부터, 0은 뒤의 값부터 삭제하기
i = 0
while count1 != 0:
if S[i] == 1: # 배열의 i번째 값이 1이고 count1이 0이 아니면 해당 값 삭제
del S[i]
count1 -= 1
continue
i += 1
i = len(S) - 1
while count0 != 0:
if S[i] == 0: # 배열의 i번째 값이 0이고 count0이 0이 아니면 해당 값 삭제
del S[i]
count0 -= 1
i -= 1
for i in range(len(S)):
print(S[i], end='')
🟡 9086 문자열
a = int(input());
for i in range(a):
x = input();
print(x[0] + x[len(x) - 1]);
🟡1302 베스트셀러
import sys
from collections import Counter # 배열의 요소 수 세기
N = int(sys.stdin.readline()) # 팔린 책 수
A = [sys.stdin.readline() for _ in range(N)] # 제목 저장
common = Counter(A).most_common()
best_seller = []
# Counter(변수) => Counter({문자 : 개수}) 딕셔너리 형태로 반환
# Counter(변수).most_common() => (문자, 개수) 리스트 속 튜플형태로 저장
for i in range(len(common)):
if(common[0][1] == common[i][1]): # 가장 앞의 수 = 가장 큰 수
best_seller.append(common[i][0]) # 그러므로 앞의 수와 비교하여 같으면 베스트셀러
best_seller.sort() # 베스트셀러 정렬
print(best_seller[0]) # 가장 첫 번째 책 출력
- Counter를 사용하여 배열에 저장된 문자열들의 수와 해당 문자열을 정렬하여 출력해준다.
- Counter는 처음 사용해봐서 기능을 익히고 문제 풀이에 적용하는데 시간이 걸려 여러 문제들 중 베스트셀러 문제를 푸는 데 시간이 가장 오래걸렸다.
- Counter를 사용하는 것 외에도 처음 문제를 읽었을 때, 어떻게 문제를 해결해야할지 몰라서 고민하다가 문제가 쉽게 해결될 것 같지 않아서 다른 분들의 문제 풀이를 확인하였다.
- 그러나 다른 분들이 작성하신 풀이는 이해하기에 어려운 점들이 많아서 쉽게 설명된 코드를 찾다가 한 분께서 Counter를 사용하여 쉽게 코드를 작성하신 것을 발견하고 그 코드를 참조하여 Counter를 학습한 후 다시 내가 알기 쉽도록 코드를 작성해보았다.
더보기
느낀점 ⭐
20310번 타노스 문제의 경우 계속 25점이 나와서 100점을 받기위해 인터넷 검색을 하였다.
검색 결과 무조건 1과 0을 절반으로 줄이고 0부터 수동으로 출력시키는 것이 아닌 1은 앞의 값부터 지우고 0은 뒤의 값부터 지워야 한다는 사실을 깨닫고 위의 방법대로 하여 문제를 해결할 수 있었다.
1302번 베스트셀러 문제는 혼자 풀기에는 어려워서 다른 팀원분들께 질문할 계획이다.
모각코와 SW ACADEMY활동으로 다양한 문제들을 풀 수 있도록 실력을 기르고 이전에 풀었던 문제들을 조금 더 간단하고 쉬운 코드로 작성할 수 있는 능력을 기를 것이다.
7/18 베스트셀러 문제를 Counter를 사용하여 해결하였다. Counter 사용법을 기억하기 위하여 백준에 Conuter를 사용하여 풀 수 있는 다른 문제를 찾아 풀어볼 예정이다.
[Python] 모각코 백준 문제 풀이
2023.07.15 ☀️ 10817 세 수 ✅ 16435 스네이크버드 ✅ 2628 종이자르기 🔺 2752 세수정렬 ✅ 2822 점수 계산 ✅ 1181 단어 정렬 ✅ ☀️ 10817 세 수 import sys a = list(map(int, sys.stdin.readline().split())) a.sort() print(a
angidgidtn.tistory.com