알고리즘(Python)/백준
210524 [백준] 생태학(4358) / A와B(12904) / 회문(17609)
제이드Jade
2021. 5. 26. 13:18
생태학(4358)
#sorted(Counter(trees).keys()) 는 리스트형태가 됨
#tree_count=Counter(sys.stdline.read().split('\n')[:-1]) / sum(tree_count.values()) =>코드 단축!
#sorted는 밑에 for문에서 for tc in sorted(tree_count.keys())하면 되고
이는 키의 리스트 형태이므로 tree_count[tc]로 접근하면 됨.
# print(key,"%.4f"%(trees[key]/N*100)) => 나무 이름은 조작이 필요 없으므로 쌍따옴표로 가두지 않아도 됨
import sys
from collections import Counter
trees=Counter(sys.stdin.read().split('\n')[:-1])
N=sum(trees.values())
for key in sorted(trees.keys()):
print(key,"%.4f"%(trees[key]/N*100))
A와B(12904)
역발상! 꾀돌이인 나에게는 쉬운 접근이었지만 생각하는데 오래 걸릴 수도 있겠구나 싶었던 문제
코드 왜 짤리는건데.. 티스토리.. 일 안하나
회문(17609)
#앞과 끝을 같은 변위 만큼 뗄 때 str[i:-i] <<이런 방식을 쓰려고 할 수 있는데 i=0일 땐 문자열이 탄생하지 못하므로 이 방식은 쓰지 말아야 함. 그냥 len(str)를 이용하는걸로..
#인덱스 i번째 부터/까지 회문인지 검사할땐 str[i:]==str[i:][::-1] / str[:-i]==str[:-i][::-1]를 쓰면 된다.
import sys
N=int(input())
for _ in range(N):
str=sys.stdin.readline().strip()
if str==str[::-1]:
print(0)
continue
code1=0
for i in range(len(str)//2):
if str[i]!=str[-(i+1)]:
check=str[i:len(str)-i]
if check[1:]==check[1:][::-1] or check[:-1]==check[:-1][::-1]:
code1=1
break
print(1) if code1==1 else print(2)