n=int(input())
cnt=0
for i in range(1, n+1):
    arr=list(map(int, str(i)))
    if i<100 : cnt+=1
    elif arr[0]-arr[1]==arr[1]-arr[2]: cnt+=1
print(cnt)

<코드 설명>

양수 n을 입력받아주었다. 그리고 cnt의 초기값을 0으로 설정해주었다.

 

숫자를 자릿수 기준으로 나누기 위해 i를 먼저 문자열로 바꿀 수 있도록 str(i)로 바꿔주었다.

문자열로 되어있는 각 자릿수를 정수로 바꿔주기 위해 map(int, str(i))를 작성해주었다.

이를 list로 바꾸기 위해 list(map(int, str(i))) 라고 작성해주었다.

 

i가 100보다 작은 경우, 항상 한수이므로 cnt값을 증가시켜주었다.

그렇지 않으면 각 자리수가 등차수열의 경우인 arr[0]-arr[1]==arr[1]-arr[2]일 때 cnt값을 증가시켜주었다.

이렇게 구한 cnt값을 출력해주었다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 16499 동일한 단어 그룹화하기  (0) 2022.11.06
[BOJ] 13417 카드 문자열  (0) 2022.11.06
[BOJ] 2776 암기왕  (0) 2022.10.09
[BOJ] 9322 철벽 보안 알고리즘  (0) 2022.10.09
[BOJ] 1463 1로 만들기  (0) 2022.10.02

import sys

t=int(sys.stdin.readline())
for _ in range(t):
    n=int(sys.stdin.readline())
    note1=set(map(int, sys.stdin.readline().split()))
    m=int(sys.stdin.readline())
    note2=list(map(int, sys.stdin.readline().split()))
    for i in note2:
        if  i in note1:
            print(1)
        else:
            print(0)

<코드 설명>

testcase t를 먼저 입력받아주었다.

t만큼 for문으로 반복시켜 수첩1의 정수 개수인 n, n개의 수첩1 정수들, 수첩2의 정수 개수인 m, m개의 수첩2 정수들을 모두 입력받아주었다.

note2 속 원소인 i가 note1에 속해 있다면 1을 출력해주고, 그렇지 않으면 0을 출력하도록 하였다.

시간초과를 대비하여 import sys를 이용하여 입력받아주었다.

 

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 13417 카드 문자열  (0) 2022.11.06
[BOJ] 1065 한수  (0) 2022.10.09
[BOJ] 9322 철벽 보안 알고리즘  (0) 2022.10.09
[BOJ] 1463 1로 만들기  (0) 2022.10.02
[BOJ] 2910 빈도 정렬  (0) 2022.10.02

tc=int(input())
for _ in range(tc):
    n=int(input())
    k1=list(input().split())
    k2=list(input().split())
    p=list(input().split())

    s = []
    for i in k1:
        s.append(k2.index(i))
    
    arr = []
    for i in s:
        arr.append(p[i])
    
    result = ""
    for s in arr:
        result += s + " "
    print(result.strip())

<코드 설명>

testcase를 먼저 입력받아주었다.

tc만큼 for문으로 반복시켜 한 문장의 단어 수인 n, 제 1 공개키인 k1, 제 2 공개키인 k2, 암호문인 p를 입력받아주었다.

k2에서의 k1 원소인 i의 인덱스를 s에 추가해주었다. 이렇게 k2의 암호화 방식을 저장하였다.

저장된 s의 원소인 i를 이용해 arr에 p[i]를 추가해주었다. k2의 암호화 방식대로 p를 저장해주는 것이다.

그리고 이 리스트를 문자열로 바꾸어 출력해주었다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1065 한수  (0) 2022.10.09
[BOJ] 2776 암기왕  (0) 2022.10.09
[BOJ] 1463 1로 만들기  (0) 2022.10.02
[BOJ] 2910 빈도 정렬  (0) 2022.10.02
[BOJ] 25325 학생 인기도 측정  (0) 2022.10.02

n=int(input())
d=[0]*1000001
for i in range(2, n+1):
    d[i] = d[i-1] + 1
    if i%2==0:
        d[i]=min(d[i], d[i//2]+1)
    if i%3==0:
        d[i]=min(d[i], d[i//3]+1)
print(d[n])

<코드설명>

먼저 n을 입력받아주었다. 

for문을 이용하여 2부터 n까지 반복시켜주었다. 

1을 빼줬을 때 횟수 추가를 하기 위해 d[i]=d[i-1]+1을 해주었다.

i가 2로 나눠 떨어질 경우, 원래 수인 d[i]와 d[i//2]+1의 값을 비교하여 더 작은 값을 d에 넣어주었다.  +1은 횟수를 추가해주기 위함이다.

i가 3으로 나눠 떨어질 경우, 원래 수인 d[i]와 d[i//3]+1의 값을 비교하여 더 작은 값을 d에 넣어주었다.  마찬가지로 +1은 횟수를 추가해주기 위함이다. 

이렇게 구한 d[n]을 출력해주었다.

 

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 2776 암기왕  (0) 2022.10.09
[BOJ] 9322 철벽 보안 알고리즘  (0) 2022.10.09
[BOJ] 2910 빈도 정렬  (0) 2022.10.02
[BOJ] 25325 학생 인기도 측정  (0) 2022.10.02
[BOJ] 1912 연속합  (0) 2022.09.25

+ Recent posts