목록IT/코딩 (16)
언젠가는

예제 입력1로 문제를 이해하면, 17진법을 사용하고 있는 미래, 정이는 8진법을 사용하고 있다. (첫 줄 입력) 17진법을 2자리수로 나타낼 것이다. (둘째 줄 입력) => 17진법은 0에서 16까지 숫자가 올 수 있는데, 10이상인 숫자를 떼어 주어야 자릿 수를 알 수 있다. 1 16과 11 6이 116과 혼동되지 않도록 17진법으로 표현한 2 16(2자리수)를 8진법으로 출력하라 6 2(2자리수) (셋째 줄 입력) 1. 미래에 사용하는 진법을 a에 정이가 사용하고 있는 진법을 b에 입력 a,b = map(int,input().split()) 2. a진법으로 보여진 수의 자릿수를 c에 입력 c = int(input()) 3. a진법으로 얻은 수를 리스트로 입력! (9보다 큰 수의 자릿수를 유지하기 위해..

1. a에 문자열로 0부터 Z까지 만들어 준다. 11부터는 A , 35는 Z라서 인덱스로 찾을 수 있다. a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 2. b에 진법 c에 진법의 수를 넣는다. b가 int형이 아닐 수 있으므로, input().split()만 한다. b, c = input().split() 3. 2진법을 10진법을 바꿀 때를 생각해 보면 가장 왼쪽부터 제곱근을 줄여가면서 더하는데 나는 생각하기 편하게 순서를 반대로 바꾸어 주었다. b = b[::-1] 4. ans변수에 더해줄 것이다. ans=0 5. for문을 돌려서 더해준다. find를 사용하면 받은 값의 인덱스값을 알려준다. 그리고, 변수 c를 int로 바꾸어 주어야 한다. for i in range(..

1. 변수 a에 0부터 Z를 문자열로 만들어 준다. 인덱스를 가지고 값을 구할 것이다. 문제에서 11부터는 A라고 하기로 했고, 36진법이 최대라고 한정해 주었다. a[0]=0, a[35]='Z'이다. a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 2. b에는 10진수의 수를, c에는 바꿀 진법의 수가 입력된다. b, c = map(int,input().split()) 3. ans변수를 문자열로 만들어 놓고 넣어줄 것이다. ans='' 4. b를 계속 쪼갤 것이다. 2진법을 구할 때, 2로 계속 나눈 값의 나머지로 2진법 변환이 가능한 것을 생각하면 된다. 예시 입력의 36을 보면, 36으로 나눠 주면서 나머지는 저장하고, 몫은 더이상 나줘지지 않을 때까지 계속 나눠준다. ..

def ari(a): c = [True for i in range(a+1)] for i in range(2,int((a**0.5)+1)): if c[i]: for j in range(i+i,a+1,i): c[j]=False return c 소수를 인덱스 값으로 찾을 수 있는 리스트를 형성한다. 0,1을 제외하고 소수는 모두 True값을 갖는다. 0과 1은 굳이 False로 바꾸지 않고 나중에 이후값부터 찾으면 된다. a = int(input()) 짝수로 주어진 개수를 입력받는다. bs = [int(input()) for i in range(a)] 리스트로 주어진 짝수들을 다 집어 넣는다. 그 이유는 제일 큰 친구를 찾아서 그 친구로 소수찾기 함수를 만들어 놓으면, 시간절약이 되기 때문이다. 처음에 입력받..

시간초과를 방지하기 위해 소수를 True, 소수 아닌 것을 False로 만든다. 1. 문제에서 6에서 1000000까지 주어진다 했으므로 a = [True for i in range(1000001)] 2. 소수는 1과 자신만을 약수로 가진 친구들, 그러면 2부터 구구단을 외우면서 False로 만들어 준다. 1001까지 하는 이유는 소수찾기에서 **0.5까지 범위 잡았던 것을 생각하면 된다. int(1000001**0.5+1) = 1001이다. for i in range(2,1001): if a[i]: for j in range(i+i,1000001,i): a[j]=False 3. 이젠 True인 친구들은 모두 소수다. for문은 작은 값부터 시작하므로, 먼저 나오면 출력하고 퇴장하면 된다. 또한, 마지막..