입력받은 문자열을 set 자료형을 사용해 중복을 제거해 c에 저장한다. 그리고 반복문을 사용해 c의 요소를 하나하나 비교한다. index()를 사용해 요소 i의 위치를 찾고, count()를 사용해 요소 i의 개수를 찾는다.그 후 문자열 슬라이싱을 사용해 index부터 index + count까지의 문자열을 비교한다.만약 요소 i와 문자열이 다를 때는 0을 반환하고 전부 일치할 때는 1을 반환한다. 문제풀이ans = 0 def check(words): c = set(words) for i in c: index = words.index(i) count = words.count(i) for rpt in words[index:index+count]: if i != rpt: return 0 return 1 fo..
Counting Sort의 방식을 사용했다. 각 원소의 등장 횟수를 리스트에 저장하고 순서대로 등장 횟수만큼 출력한다.문제풀이import sys s = sys.stdin.readline lst = [0] * 10001 for i in range(int(s())): lst[int(s())] += 1 for i in range(1,10001): print("{}\n".format(i)*lst[i],end="")
원래는 병합 정렬, 힙 정렬 같은 O(NlogN) 이하의 시간복잡도를 갖는 정렬을 사용해야 한다.하지만 파이썬은 매우 느린 언어이기 때문에 직접 정렬을 구현해도 시간 초과가 나올 확률이 높다.그렇기에 내장 정렬 함수인 sorted()와 input() 대신 sys.stdin.readline을 사용해 정렬했다.중복되는 값은 set 자료형을 사용해 제거했다.문제풀이import sys ipt = sys.stdin.readline S = set() for i in range(0,int(ipt())): S.add(int(ipt())) for i in sorted(S): print(i)
분자 혹은 분모의 최댓값을 알기 위해 반복문을 사용해 N의 값을 1씩 증가시키며 X가 0 이하가 될 때까지 뺀다.이때 X는 0 이하의 숫자가 되기에 1을 더해 양수로 변환한다. 분자가 1 증가하면 분모가 1 감소하거나 그 반대의 형식이기에 분자나 분모를 구하기 위해 N에서 X를 더해 감소한 값을 구한다.그리고 지그재그 순서임을 고려하여 N이 짝수일 때는 분모가 1씩 감소하고 홀수일 때는 반대의 형식으로 출력한다.문제풀이 X,N = int(input()),0 while X > 0: N += 1 X -= N if N % 2 == 0: print("{0}/{1}".format(N+X,1-X)) else: print("{0}/{1}".format(1-X,N+X))
enumerate()를 사용해 각 작업의 대기순서를 설정하고 pop(0)을 사용해 가장 앞의 문서를 꺼내고 비교한다.현재 i의 중요도가 가장 높고 대기순서가 location과 같을 때는 mx - len(importance)를 반환한다.i의 중요도가 가장 큰 값이 아닐 때는 append()를 사용해 맨 뒤로 보낸다.i의 중요도가 가장 크나 대기순서가 location과 같지 않을 때는 중요도를 비교할 priorities에서 제일 큰 값을 빼낸다.문제풀이def solution(priorities, location): importance = [] mx = len(priorities) for e,p in enumerate(priorities): importance.append((p,e)) while True: i..
답을 반환할 ans와 막대기의 개수를 저장할 stick을 생성한다. 다음으로 레이저를 체크할 용도인 flag를 생성한다. 기본값은 False이다.입력받은 arrangement를 반복문으로 돌려 "("일 때는 stick에 1을 더하고 flag를 True로 전환한다.")"일 때는 flag의 값에 따라 실행한다. flag가 True면 레이저이기 때문에 stick에서 1을 빼고 ans에 stick의 값을 더한다. 그리고 flag를 False로 전환한다.flag가 False일때는 쇠막대기의 끝임을 나타내기 때문에 stick에서 1을 빼고 ans에 1을 더한다.문제풀이def solution(arrangement): ans, stick = 0, 0 flag = False for a in arrangement: if ..
입력받은 plays와 genres를 튜플 형태로 변환해 ipt에 저장한다.collections.Counter()를 사용해 장르별로 실행된 횟수를 저장한다.많이 재생된 장르 순서대로 plays와 genres를 튜플 형태로 저장한 st를 생성한다.st는 plays를 기준으로 해 내림차순으로 정렬하고 최대 2개까지 lst에 저장한다.lst에 저장된 튜플 값을 순서대로 ipt에서 찾아 위치값을 ans에 저장한다. 이미 ans에 위치값이 존재할 때는 그 위치값에서 1을 더해 다시 찾아 저장한다. 문제풀이 import collections from operator import itemgetter def solution(genres, plays): ipt = [i for i in zip(plays,genres)] g..