a, b = input().split()

ans = []
for i in range(len(b) - len(a) + 1):
    cnt = 0
    for j in range(len(a)):
        if a[j] != b[i + j]:
            cnt += 1
    ans.append(cnt)

print(min(ans))

<코드 설명>

a와 b를 입력 먼저 받아주었다.

두 문자열 길이의 차이만큼 for문을 통해 반복시켜주었다. 그 내에서 for문을 통해 a와 b의 문자열과 비교해주었다. 비교해서 다르다면 cnt를 1씩 추가해주었다. a의 문자열을 다 비교한 후 ans에 cnt를 추가해주었다. 이를 문자열 길이의 차이 만큼 반복 후 ans 중 가장 작은 값을 출력해주었다.

 

<실행 결과>

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

[BOJ] 2609 최대공약수와 최소공배수  (0) 2022.05.08
[BOJ] 1181 단어 정렬  (0) 2022.05.08
[BOJ] 10866 덱  (0) 2022.04.29
[BOJ] 10845 큐  (0) 2022.04.28
[BoJ] 4673 셀프 넘버  (0) 2022.04.03

(class 2)

 

1차 코드(실패)

n=int(input())
deque=[]

for i in range(n):
    cmd=input().split()

    if cmd[0]=="push_front":
        deque.insert(0,cmd[1])
    elif cmd[0]=="push_back":
        deque.append(cmd[1])
    elif cmd[0]=="pop_front":
        if len(deque)==0:
            print(-1)
        else:
            print(deque.pop(0))
    elif cmd[0]=="pop_back":
        if len(deque)==0:
            print(-1)
        else:
            print(deque.pop(-1))
    elif cmd[0]=="size":
        print(len(deque))
    elif cmd[0]=="empty":
        if len(deque)==0:
            print(1)
        else:
            print(0)
    elif cmd[0]=="front":
        if len(deque)==0:
            print(-1)
        else:
            print(deque[0])
    elif cmd[0]=="back":
        if len(deque)==0:
            print(-1)
        else:
            print(deque[-1])

실패 이유 : 시간 초과

 

 

2차 코드(성공)

import sys
n=int(input())
deque=[]

for i in range(n):
    cmd=sys.stdin.readline().split()

    if cmd[0]=="push_front":
        deque.insert(0,cmd[1])
    elif cmd[0]=="push_back":
        deque.append(cmd[1])
    elif cmd[0]=="pop_front":
        if len(deque)==0:
            print(-1)
        else:
            print(deque.pop(0))
    elif cmd[0]=="pop_back":
        if len(deque)==0:
            print(-1)
        else:
            print(deque.pop(-1))
    elif cmd[0]=="size":
        print(len(deque))
    elif cmd[0]=="empty":
        if len(deque)==0:
            print(1)
        else:
            print(0)
    elif cmd[0]=="front":
        if len(deque)==0:
            print(-1)
        else:
            print(deque[0])
    elif cmd[0]=="back":
        if len(deque)==0:
            print(-1)
        else:
            print(deque[-1])

<코드 설명>

먼저 명령어의 개수인 n을 입력받았다. 그리고 이 n만큼 for문으로 반복시켜주었다.

for문 내에서 cmd에 명령어를 입력받도록 하였고, sys.stdin.readline().split()을 통해 입력받아주었다. 이를 이용하면 반복문으로 계속 입력값을 받는 문제에서 실행 시간을 줄일 수 있다고 한다.

 

cmd[0]이 push_first일 때,  insert를 통해 queue 0번째에 cmd[1]값을 넣어주었다.

cmd[0]이 push_back일 때,  queue에 cmd[1]값을 넣어주었다.

cmd[0]이 pop_front일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주었고, 그렇지 않으면 0번째 원소를 pop해주었다.

cmd[0]이 pop_back일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주었고, 그렇지 않으면 -1번째 원소를 pop해주었다.

cmd[0]이 size일 때, queue의 길이를 출력해주었다.

cmd[0]이 empty일 때, queue의 길이가 0이면 1을 출력해주고 그렇지 않으면 0을 출력해주었다.

cmd[0]이 front일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주고, 그렇지 않으면 queue의 첫번째 원소인 0번째 원소를 출력해주었다.

cmd[0]이 back일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주고, 그렇지 않으면 queue의 마지막 원소인 -1번째 원소를 출력해주었다.

 

<실행 결과>

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

[BOJ] 1181 단어 정렬  (0) 2022.05.08
[BoJ] 1120 문자열  (0) 2022.05.01
[BOJ] 10845 큐  (0) 2022.04.28
[BoJ] 4673 셀프 넘버  (0) 2022.04.03
[BOJ] 1929 소수 구하기  (0) 2022.04.02

(class 2)

n=int(input())
queue=[]

for i in range(n):
    cmd=input().split()

    if cmd[0]=="push":
        queue.append(cmd[1])
    elif cmd[0]=="pop":
        if len(queue)==0:
            print(-1)
        else:
            print(queue.pop(0))
    elif cmd[0]=="size":
        print(len(queue))
    elif cmd[0]=="empty":
        if len(queue)==0:
            print(1)
        else:
            print(0)
    elif cmd[0]=="front":
        if len(queue)==0:
            print(-1)
        else:
            print(queue[0])
    elif cmd[0]=="back":
        if len(queue)==0:
            print(-1)
        else:
            print(queue[-1])

<코드 설명>

먼저 명령어의 개수인 n을 입력받았다. 그리고 이 n만큼 for문으로 반복시켜주었다.

for문 내에서 cmd에 명령어를 입력받도록 하였고, split을 통해 한번에 여러개를 입력받았다.

 

cmd[0]이 push일 때,  queue에 cmd[1]값을 넣어주었다.

cmd[0]이 pop일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주었고, 그렇지 않으면 0번째 원소를 pop해주었다.

cmd[0]이 size일 때, queue의 길이를 출력해주었다.

cmd[0]이 empty일 때, queue의 길이가 0이면 1을 출력해주고 그렇지 않으면 0을 출력해주었다.

cmd[0]이 front일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주고, 그렇지 않으면 queue의 첫번째 원소인 0번째 원소를 출력해주었다.

cmd[0]이 back일 때, queue가 empty 상태일 때 (queue의 길이가 0일때) -1을 출력해주고, 그렇지 않으면 queue의 마지막 원소인 -1번째 원소를 출력해주었다.

 

<실행결과>

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

[BoJ] 1120 문자열  (0) 2022.05.01
[BOJ] 10866 덱  (0) 2022.04.29
[BoJ] 4673 셀프 넘버  (0) 2022.04.03
[BOJ] 1929 소수 구하기  (0) 2022.04.02
[BOJ] 10828 스택  (0) 2022.04.02

#include<stdio.h>
int func(int n) {
	int sum = n;
	while (n > 0) {
		sum += n % 10;
		n = n / 10;
	}
	return sum;
}

int main()
{
	int i, arr[10001] = { 0 }, result;
	for (i = 1; i <= 10000; i++) {
		result = func(i);
		if (result < 10001) {
			arr[result] = 1;
		}
	}
	for (i = 1; i <= 10000; i++) {
		if (arr[i] != 1) {
			printf("%d\n", i);
		}
	}
	return 0;
}

<코드 설명>

- func 함수 : 인자값을 sum에 넣어준다. sum에 n을 10으로 나눈 나머지(일의 자리)를 더해주며, n을 10 나눠준다(십의 자리). 또 이 십의 자리를 더해주며 이를  n이 0보다 클 때까지 반복시켜준다. 

 

  먼저 배열 arr를 만들어주었다. 10000까지의 수를 확인해주어야 하기 때문에 이를 for문을 통해 i가 1부터 10000까지 반복시켜주었다. result에 func(i)를 저장해주고 result가 10001 미만이면 arr[result]에 1을 저장시켜준다. 그리고 이 과정이 끝나면 arr의 저장값이 1이 아닌 경우만 출력해주었다.

 

<실행 결과>

 

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

[BOJ] 10866 덱  (0) 2022.04.29
[BOJ] 10845 큐  (0) 2022.04.28
[BOJ] 1929 소수 구하기  (0) 2022.04.02
[BOJ] 10828 스택  (0) 2022.04.02
[SISS] C 백준 8주차 (11720, 1085, 10250)  (0) 2022.02.14

+ Recent posts