본문 바로가기

Codeforces/Python

(21)
[Codeforces] 734A - Anton and Danik (Python) 문제문제링크Anton과 Danik가 체스를 둬서 승자를 알려준다.둘의 이긴 횟수가 같으면 'Friendship'을, 다르면 이긴 사람을 출력하라. 풀이Anton이 이긴 횟수를 문자열에서 'A'의 개수를 세서 anton에 저장한다.전체 게임 수 n과 2*anton이 같으면 'Friendship'을 출력한다.n보다 2*anton이 크면 Anton이 이긴 게임 수가 과반수를 넘기 때문에 Anton이 이긴 것이다. 코드n=int(input())s=input()anton=s.count('A')if n==2*anton: print('Friendship')elif n
[Codeforces] 96A - Football (Python) 문제문제링크같은 팀의 선수가 7명 이상 연속해서 서 있으면 위험한 상황이다.현재 상황이 위험한 상황인지 판단하라. 풀이문자열 1111111 또는 0000000은 같은 팀 선수 7명이 연속해서 서 있는 상황이다.이 문자열들이 입력받은 문자열에 들어있다면 위험하다고 하면 된다. 코드s=input()if ('1111111' in s) or ('0000000' in s): print('YES')else: print('NO')
[Codeforces] 69A - Young Physicist (Python) 문제문제링크모든 벡터들의 합이 0이 되면 평형이 된다.n개의 벡터들이 평형을 이루는지 구하라. 풀이[0, 0, 0]인 리스트를 만들고 x, y, z 좌표를 모두 각 자리에 더한다.n번 더한 후에 이 리스트가 다시 [0, 0, 0]이 된다면 평형을 이루는 것이다. 코드n=int(input())vector=[0,0,0]for _ in range(n): point=list(map(int, input().split())) for i in range(3): vector[i]+=point[i]if vector==[0,0,0]: print('YES')else: print('NO')
[Codeforces] 977A - Wrong Subtraction (Python) 문제문제링크두 자리 이상 숫자에 대해 다음의 알고리즘을 사용한다.마지막 자릿수가 0이 아니면 숫자에서 1을 뺀다.마지막 자릿수가 0이면 숫자를 10으로 나눈다.k번의 연산이 끝난 후 결과를 출력하라. 결과는 항상 양의 정수임이 보장된다. 풀이Tanya의 알고리즘에 대한 함수 Tanya_subtract()를 작성한다.마지막 자릿수가 0인지 확인하기 위해 n%10!=0을 확인한다. 조건을 만족하면 n-1을, 아니면 n//10을 return한다.for문을 사용해 k번 Tanya_subtract()를 실행시켜 그 전의 결과를 다음 함수의 인수로 사용한다. 코드def Tanya_subtract(n): if (n%10!=0): return n-1 else: return n//10n, k=map(int, ..
[Codeforces] 59A - Word (Python) 문제문제링크문자열 s는 대문자와 소문자로 이루어져 있다.대문자의 개수가 소문자보다 많으면 전체를 대문자로, 그렇지 않으면 전체를 소문자로 바꾸어라. 풀이문자 i.isupper()로 확인해 결과가 True라면 1을 반환하므로 이를 모두 더하면 대문자의 수를 구할 수 있다.이 수가 전체 길이의 반보다 작거나 같다면 전체를 소문자로 바꿔야 하므로 s.lower()를 한다.아니라면 s.upper()로 전체를 대문자화한다. 코드s=input()if len(s)>=sum(1 for i in s if i.isupper())*2: print(s.lower())else: print(s.upper())
[Codeforces] 546A - Soldier and Bananas (Python) 문제문제링크바나나를 사기 위한 총 금액은 등차수열의 합과 같다.총 금액에서 가지고 있는 돈을 빼서 부족한 금액을 구하라. 풀이바나나의 개수는 w(w+1)//2와 같고 따라서 총 금액은 이 개수에 k를 곱한 값이다.총 금액에서 가지고 있는 금액을 뺀 값을 rest에 저장한다.rest가 0보다 크면 rest값을, 아니면 0을 출력한다. 코드k,n,w=map(int, input().split())tot=k*((w*(w+1))//2)rest=tot-nprint(rest if rest>0 else 0)
[Codeforces] 118A - String Task (Python) 문제문제링크모든 모음을 삭제하고 각 자음 앞에 '.'를 삽입하고 모두 소문자로 바꾸어라. 풀이문자열의 요소 i가 모음 ['a', 'e', 'i', 'o', 'u', 'y'] 중 하나라면 continue로 다음 요소로 넘어간다.아니라면, 즉 자음이라면 새 문자열에 .i 를 추가한다. 코드s=input().lower()new_s=''for i in s: if i in ['a', 'e', 'i', 'o', 'u', 'y']: continue else: new_s+=('.'+i)print(new_s)
[Codeforces] 266A - Stones on the Table (Python) 문제문제링크돌이 일렬로 n개 놓여 있는데, 각각 빨간색(R), 초록색(G), 파란색(B) 중 하나이다.이때 이웃한 두 돌의 색이 서로 다르도록 하기 위해 최소 몇 개의 돌을 제거해야하는가? 풀이인덱스를 활용하여 바로 전의 요소와 현재 요소가 같으면 제거해야하므로 cnt에 1을 더해준다.이때 range(n)으로 두면, i=0일 때 인덱스 에러가 생기므로 주의해야 한다. 코드n=int(input())s=input()cnt=0for i in range(1, n): if s[i-1]==s[i]: cnt+=1print(cnt)