(class 2)

a,b=map(int,input().split())
def gcd(a,b):
    while a%b!=0:
        a,b=b,a%b
    return b

def lcm(a,b):
    return a*b//gcd(a,b)

print(gcd(a,b))
print(lcm(a,b))

<코드 설명>

gcd 함수 : a를 b로 나눈 나머지가 0이 아닐때까지 b값을 a로, a%b값을 b로 계속해서 값을 바꿔나가며 b를 반환한다.

lcm 함수 : a와 b를 곱하고 gcd(a,b)값을 나눠 이 값을 반환한다.

 

<실행 결과>

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

[BOJ] 7568 덩치  (0) 2022.05.15
[BOJ] 1312 소수  (0) 2022.05.08
[BOJ] 1181 단어 정렬  (0) 2022.05.08
[BoJ] 1120 문자열  (0) 2022.05.01
[BOJ] 10866 덱  (0) 2022.04.29

(class 2)

n=int(input())
word=[]
for i in range(n):
    word.append(input())
word=list(set(word))
word.sort()
word.sort(key=len)

for i in word:
    print(i)

<코드 설명>

단어의 개수 n을 입력받고 n만큼 반복문을 통해 배열 word를 입력받아 append해주었다.

먼저 배열 내의 중복 제거를 위해 set을 이용해주었다.

 

길이가 짧은 순, 길이가 같으면 알파벳 순으로 정렬해야 하는데 길이가 짧은 것부터 정렬하는 것이 우선이기에 알파벳 순으로 로 먼저 정렬을 해주고 그 후에 길이가 짧은 순으로 정렬해주었다.

 

반복문을 통해 정렬된 word를 출력해주었다.

 

<실행 결과>

 

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

[BOJ] 1312 소수  (0) 2022.05.08
[BOJ] 2609 최대공약수와 최소공배수  (0) 2022.05.08
[BoJ] 1120 문자열  (0) 2022.05.01
[BOJ] 10866 덱  (0) 2022.04.29
[BOJ] 10845 큐  (0) 2022.04.28

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

+ Recent posts