> 실패 코드

import itertools
tc=int(input())
arr=[]
for _ in range(tc):
    arr.append(int(input()))
per=list(itertools.permutations(arr,2))
sorted=[]
for i in per:
    num=str(i[0])+str(i[1])
    num=int(num)
    sorted.append(num)
sorted.sort()
print(sorted[2])

<코드 설명>

tc로 testcase를 input 받는다.

tc만큼 for문을 반복하여 arr에 숫자들을 입력받는다.

그리고 리스트 내의 원소를 조합해주는 itertools.permutations를 이용하여 arr의 원소들의 모든 조합을 per 변수에 저장해주었다.

per 원소에서의 첫번째 원소와 두번재 원소를 이어주어 num에 저장한 후, int로 형변환을 한다. 그리고 이를 sorted 리스트에 추가해주었다.

이 리스트를 sort해주어 세번째로 작은 수를 출력해주었다.

 

-> 하지만 메모리 초과 오류가 떴다. 아마 숫자 간의 조합을 모두 구해서 그런 것 같았다.

 

> 성공 코드

tc=int(input())
arr=[]
for _ in range(tc):
    arr.append(int(input()))
arr.sort()
sorted=[]
for i in arr[:4]:
    for j in arr[:4]:
        if i!=j:
            num=int(str(i)+str(j))
            sorted.append(num)
sorted.sort()
print(sorted[2])

<코드 설명>

앞선 코드와 달리 모든 조합을 구하지 않았다.

arr배열을 먼저 sort한 후, 작은 원소 4개까지만 지정하여 조합을 구하도록 하였다.

나머지 코드는 위와 동일하다.

 

<실행 결과>

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

[BOJ] 10988 팰린드롬인지 확인하기  (0) 2023.09.30
[BOJ] 1629 곱셈  (0) 2022.11.20
[BOJ] 17413 단어 뒤집기 2  (1) 2022.11.20
[BOJ] 1543 문서 검색  (0) 2022.11.13
[BOJ] 3077 임진왜란  (0) 2022.11.13

s=list(input())
i=0
j=0
while True:
    if i>=len(s):break
    if s[i]=="<":
        i+=1
        while s[i]!=">":
            i+=1
    elif s[i].isalnum():
        j=i
        while i<len(s) and s[i].isalnum():
            i+=1
        rev=s[j:i]
        rev.reverse()
        s[j:i]=rev
    else:
        i+=1
print("".join(s))

<코드 설명>

s를 먼저 입력받는다.i가 s의 길이보다 크거나 같을 때 while문을 빠져나오도록 하였다.

 

1. s[i]가 "<"일 때, index를 1증가시켜주고 ">"를 만날때까지 index를 증가시켜주어 그대로 출력되도록 하였다.

2. s[i]가 숫자이거나 알파벳인 경우, 시작점인 i를 j에 저장시킨 후 s[i]가 숫자이거나 알파벳이 아닐때까지 i를 증가시켜주었다. 이전에 저장하였던 시작index인 j와 마지막 index인 i까지 reverse()를 적용시켜 다시 s배열 동일 위치에 저장시켰다.

3. s[i]가 공백일 경우, index를 1 증가시켜주었다.

 

이렇게 구한 배열 s를 출력하였다.

 

<실행 결과>

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

[BOJ] 1629 곱셈  (0) 2022.11.20
[BOJ] 5619 세 번째  (0) 2022.11.20
[BOJ] 1543 문서 검색  (0) 2022.11.13
[BOJ] 3077 임진왜란  (0) 2022.11.13
[BOJ] 4889 안정적인 문자열  (0) 2022.11.13

arr=input()
n = arr.split(input())
print(len(n)-1)

<코드 설명>

문자열.split('구분자') : 구분자를 기준으로 문자열을 분할

 

arr에 문자열을 입력받는다.

arr문자열을 split함수를 통해 나눠주는데, 이 때 구분자를 input 받아준다.

이를 n에 저장해주고, n의 길이 -1을 출력해준다.

 

<실행 결과>

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

[BOJ] 5619 세 번째  (0) 2022.11.20
[BOJ] 17413 단어 뒤집기 2  (1) 2022.11.20
[BOJ] 3077 임진왜란  (0) 2022.11.13
[BOJ] 4889 안정적인 문자열  (0) 2022.11.13
[BOJ] 14425 문자열 집합  (0) 2022.11.06

n=int(input())
ans=input().split()
test=input().split()
dic={}
cnt=0
for i in range(n):
    dic[ans[i]]=i
for i in range(n):
    for j in range(i+1, n):
        if dic[test[i]]<dic[test[j]]:
            cnt+=1
print(str(cnt)+"/"+str(n*(n-1)//2))

<코드 설명>

해전의 개수인 n을 먼저 입력받는다.

그리고 올바른 정답인 ans와 현우가 작성한 답안인 test를 입력받는다.

n만큼 for문을 통해 ans원소의 순서를 dic에 저장해주었다.

이중 for문을 통해 test의 순서가 ans의 순서와 동일한 지 확인해주고, 맞다면 cnt값을 증가시킨다.이렇게 구한 cnt값과 총점인 n*(n-1)//2을 출력해준다.

 

<실행 결과>

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

[BOJ] 17413 단어 뒤집기 2  (1) 2022.11.20
[BOJ] 1543 문서 검색  (0) 2022.11.13
[BOJ] 4889 안정적인 문자열  (0) 2022.11.13
[BOJ] 14425 문자열 집합  (0) 2022.11.06
[BOJ] 16499 동일한 단어 그룹화하기  (0) 2022.11.06

+ Recent posts