반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- GNN
- 데이터분석
- Graph
- 강화학습
- 베이지안
- bayesian
- uncertainty
- 백준
- pandas
- 텍스트마이닝
- PYTHON
- 파이썬
- 텍스트분석
- AI
- 불확실성
- R
- VAE
- 크롤링
- selenium
- 알고리즘
- 코딩테스트
- pytorch
- YarinGal
- 논문리뷰
- 리눅스
- Crawling
- dropout
- 우분투
- 빅데이터
- DATA
Archives
- Today
- Total
끄적거림
[HackerRank] Repeated String 본문
728x90
반응형
문제
요약하면, 문자열 s가 주어졌을 때, s가 무한히 반복되는 상황이다.
이때, 처음부터 n번째까지의 자리까지 문자열에서 a의 개수를 반환하는 문제이다.
코드
# import numpy as np
import collections as co
"""
- s : 무한히 반복될 문자열
- n : n번째 자리 수
"""
# method 1 : co.Counter()
# nains = dict(co.Counter(sl).most_common())['a']
# nainsubs = dict(co.Counter(s[:rrep]).most_common())['a']
# method 2 : for loop count
def repeatedString(s, n):
sl = list(s)
ns = len(sl)
nrep = n // ns
rrep = n % ns
print(nrep, rrep)
nains = 0
for a in sl:
if a == "a": nains += 1
nainsubs = 0
for a in list(s[:rrep]):
if a == "a": nainsubs += 1
print(nains, nainsubs)
res = nrep * nains + rrep * nainsubs
return res
if __name__ == '__main__':
# s = "epsxyyflvrrrxzvnoenvpegvuonodjoxfwdmcvwctmekpsnamchznsoxaklzjgrqruyzavshfbmuhdwwmpbkwcuomqhiyvuztwvq"
# n = 549382313570
s = "ojowrdcpavatfacuunxycyrmpbkvaxyrsgquwehhurnicgicmrpmgegftjszgvsgqavcrvdtsxlkxjpqtlnkjuyraknwxmnthfpt"
n = 685118368975
# r = 16481469408
# r = 41107102139
result = repeatedString(s, n)
print(result)
해설
- 23개의 test case 중 12개나 틀렸다.
- 로직상 문제는 없는 거 같은데 큰 수를 다룸에 있어 뭐낙 오류가 나는 느낌이다.
- 원인 아직 파악 못함ㅠㅠ
실제 정답
"""
- s : 무한히 반복될 문자열
- n : n번째 자리 수
"""
def repeatedString(s, n):
res = s.count("a") * (n // len(s)) + s[:n % len(s)].count("a")
return res
if __name__ == '__main__':
s = "ojowrdcpavatfacuunxycyrmpbkvaxyrsgquwehhurnicgicmrpmgegftjszgvsgqavcrvdtsxlkxjpqtlnkjuyraknwxmnthfpt"
n = 685118368975
result = repeatedString(s, n)
print(result)
- 충격적인 정답을 보았다.
- 우선, python의 기능을 잘 활용했다는 점
- 나는 10줄이 넘는 코드를 단 한 줄로 줄였다는 점
- 그럼에도 모든 test case를 맞췄다는 점
- 정말 한 수 배웠다..
- 어디서 잘못되었는지 확인했다. 이런걸로 틀리다니ㅠ 아직 멀긴 멀었다.
728x90
반응형
'Python > 알고리즘(코딩테스트)' 카테고리의 다른 글
[HackerRank] Arrays: Left Rotation (0) | 2022.06.29 |
---|---|
[HackerRank] 2D Array (0) | 2022.06.29 |
[HackerRank] Jumping on the Clouds (0) | 2022.06.28 |
[HackerRank] Counting Valleys (0) | 2022.06.28 |
[HackerRank] 양말 짝 맞추기 (0) | 2022.06.28 |
Comments