Python 9

코드포스 131A 풀이

a=input() a=[x for x in a] flag= True if a[0].islower() == True: for i in range(len(a)-1): if a[i+1].islower()==True: flag = False for j in range(len(a)-1): if flag: a[j+1]=a[j+1].lower() if flag: a[0]=a[0].upper() else: for i in range(len(a)-1): if a[i+1].islower()==True: flag=False for i in range(len(a)): if flag: a[i]=a[i].lower() print("".join(a)) 문제가 첫번째만 소문자고 나머지는 다 대문자일 경우와 전부 대문자일 경우만 수정..

코드포스 풀이 2022.01.31

코드포스 344A 풀이

import sys n=int(sys.stdin.readline().rstrip()) pre ='' cnt=1 cur=[] for i in range(n): cur.append(sys.stdin.readline().rstrip()) # if i==0: # continue # if cur[i]!=cur[i-1]: # cnt+=1 a="".join(cur) for i in range(0,len(cur)*2,2): if "00" in a[i:i+4] or "11" in a[i:i+4]: cnt+=1 print(cnt) 개인적으로 개삽질한 문제.. 문제는 쉬운데 최대 10만개의 input을 받을 수 있어서 시간초과를 내지 않으려면 반드시 sys로 인풋을 받아줘야한다. 위와 같이 sys를 import시키고 inp..

코드포스 풀이 2022.01.31

파이썬 문자열과 리스트의 차이

문자열과 리스트는 거의 동일하다고 볼 수도 있다. 하지만, 문자열은 인덱스에 따라 값을 수정할 수 없다는 차이점이 있다. 즉, a= "ABC"라고 할 때, a[1]="D"라고 하면 type오류가 발생한다. 따라서 a를 "ADC"와 같게 바꾸려면 다양한 방법이 있겠지만 List comprehension을 통해 리스트로 전환한후, 다시 합치는 방법이 있겠다. 리스트 컴프리헨션을 이용하면 a="ABC"에서 a= [x for x in a] 와 같이 바꿔줄 수 있고 a= ["A", "B", "C"]와 같이 바뀐다. 즉, 이제는 a[1]="D"와 같은 수정이 가능해진 것이다! 다시 a를 "ADC"로 만들려면 join함수를 이용해야 하는데 "".join(a)와 같이 하면 된다. ""는 원소 사이 공백을 의미한다.

python 2022.01.29

코드포스 136A 풀이

n = int(input()) arr = list(map(int, input().split())) field= [0]*105 a=[] for i,v in enumerate(arr): field[v]=i+1 for j in range(n): a.append(str(field[j+1])) print(" ".join(a)) 배열 [2 3 4 1]의 경우 인덱스를 역으로 참조하여 배열 [4 1 2 3]처럼 만드는 문제이다. 총 100개의 인덱스를 가질 수 있다고 문제에 언급돼 있으니, 넉넉히 105개짜리 field배열을 만들어준다. (역인덱스를 저장할 배열) 파이썬에는 enumerate기능이 있어 너무나 쉽게 i가 인덱스 v가 값이라면 v를 인덱스로, i를 값으로 하는 역참조를 할 수 있다. 단, 숫자들이 가리..

코드포스 풀이 2022.01.29

코드포스 1352A 풀이

t=int(input()) for _ in range(t): a=input() x=[] cnt=0 y=[] if len(a)==1 or len(a)==5: print(1) print(a) else: for i in reversed(range(len(a))): if a[i]!="0": x.append(a[i]) cnt+=1 y.append(cnt) else: cnt+=1 print(len(x)) for j in range(len(x)): print(int(x[j])*(10**(y[j]-1)), end=' ') print() 정수를 5309이라 하면 총 3개(5000, 300, 9)로 쪼개는 문제이다. 테스트 케이스 t에 따라 정수를 문자열로 우선 인풋 a로 받아준다. a는 10**4까지 임으로 a의 길이는..

코드포스 풀이 2022.01.29