목록전체 글 (229)
DevKim
www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 정답률이 적은 문제는 그 이유가 있는법.. 시간초과 자슥 ㅠㅠㅠㅠㅠ 시간복잡도에 대해 더 깊게 공부해야겠다 이건 쉽게 생각할 수 있는 코드로 짰더니 시간 초과가 발생했다 #시간초과!!!! n,m=map(int,input().split()) for i in range(n,m+1): if i==1: continue k=0 for j in range(2,i): if i%j==0: k+=1 if k==0: print(i) 에라토스테네스의 체 알고리즘..
www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110 www.acmicpc.net 0이 입력되는 경우를 조심할 것!!!!!!!!!!!!!!! #0이 입렫되는 경우를 조심하기!!!!!!! n=int(input()) k=n L=0 k_1=0 #이전 k 값 result=[] if n!=0: while True: if k==1: break if k%(-2)
www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 요즘 시간초과 때문에 애먹고있다 ㅠㅠ 밑에 코드는 처음 시간초과 난 코드 #시간초과 a=input() k=0 n_10=0 for i in range(len(a)-1,-1,-1): n_10+=int(a[k])*(2**i) k+=1 result=[] while n_10 >= 8: result.append(n_10%8) n_10=n_10//8 result.append(n_10) result=list(reversed(result)) print(''.join(map(str,result))) 밑에 코드로 수정해서 통과했다.!..
www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 이거 다음 요세푸스2가 정말 문제다.. 시간초과 때문에 세그먼트 트리를 사용해야한다고한다. 일단 이 문제는 밑에 코드로 통과 from collections import deque import sys que=deque() n,k=map(int,sys.stdin.readline().split()) List=[] for i in range(n): List.append(i+1) now=k-1 result=[] while True: que.append(List.pop(now)) if len(List)==0: b..
www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 시간 초과에 대해 깊게 생각 해볼 수 있었던 문제였다.! List는 메모리 공간을 할당해서 자료를 저장해서 삽입하거나 삭제할때 다른 원소들을 밀거나 당기는 등.. 건들이게됨. 이 문제를 풀기 위해서는 1. List의 맨 앞,뒤에서만 삽입/삭제 연산을 할 수 있도록 알고리즘 구현하기 2. 다른 원소를 건들일 필요가 없는 자료구조 사용하기 를 생각해야한다 시간초과난 첫번째 코드 import time T=time.ti..
www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net ord 와 chr을 이용해 구함 s=input() s=list(s) for j in range(len(s)): i=s[j] #대문자의 경우 if ord(i)>=65 and ord(i) =65 and k =97 and ord(i) =97 and k
www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 파이썬 정규 표현식을 이용해서 구했다 - [] : [ ]사이의 문자들과 매치 되는지 ex.[abc] => abc 중에 하나라도 매치되면 매치 =[a-c] - ^ 는 반대의 의미 [^0-9]는 숫자가 아닌 문자만 매치됨 - \d - 숫자와 매치, [0-9]와 동일한 표현식이다. - \D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다. - \s - whitespace 문자와 매치, [ \t\n\r..
www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net ord() 를 이용해서 아스키 코드를 통해 간단히 구현하였다 s=input() List=[0]*26 s=sorted(s) for i in s: k=ord(i)-97 if s.count(i)==0: List.append(0) else: List[k]=(s.count(i)) print(*List)