sbs1621
부릉부릉 개발자
sbs1621
만나서 반갑습니당 🤍
Portfolio
Github
email
전체 방문자
오늘
어제
  • 분류 전체보기 (69)
    • Spring Boot (3)
      • Swagger (2)
      • Test Code (1)
    • Spring Security (4)
      • Json Web Token (4)
    • Algorithm (25)
      • Beakjoon (22)
      • Programmers (0)
      • 이것이 코딩테스트다 (3)
    • Kubernetes (0)
      • Docker (0)
    • Util (2)
      • Customizing (2)
    • Computer Sience (8)
      • Operating System (0)
      • Network (8)
    • IoT (2)
      • Arduino (2)
    • Daily Life (16)
      • 꿀팁 (1)
      • 일상 (6)
      • 해외여행 (4)
      • 회고록 (3)
      • 학교 (2)
    • Work (9)
      • ETRI (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
sbs1621

부릉부릉 개발자

[Beakjoon] 백준 5619번 Python
Algorithm/Beakjoon

[Beakjoon] 백준 5619번 Python

2022. 8. 9. 18:00
Beakjoon 5619, 세 번째
solved.ac Silver2
Greedy 알고리즘

문제

서로 다른 자연수 n개 a1, a2, ..., an이 주어진다. 이때, a1, ... an에서 2개를 선택해서 붙여서 새로운 수를 만들 수 있다. 이때, 세 번째로 작은 수를 구하는 프로그램을 작성하시오.

예를 들어, 3과 4를 합치면 34나 43이 된다. 또, a1 = 1, a4 = 11을 합쳐서 111을 만든 경우에, a1a4와 a4a1은 다른 수이다.

입력

첫째 줄에 수의 개수 n(3 ≤ n ≤ 108)이 주어진다. 다음 줄부터 한 줄에 하나씩 ai가 주어진다. (1 ≤ ai ≤ 10000)

출력

세 번째로 작은 수를 출력한다.

Sulution

n = int(input())
data = []
for _ in range(n):
    d = int(input())
    data.append(d)
data.sort()

result = []
for i in data[:4]:
    for j in data[:4]:
        if i != j:
            r = int(str(i) + str(j))
            result.append(r)
result.sort()

print(result[2])

풀이

입력받을 최소의 수가 3이기 때문에 입력받은 숫 중에서 가장 작은 3개의 수만 가지고 숫자를 조합을 합니다.

  • 모든 수를 비교해서 배열을 만들고 정렬을 하게 되면 메모리 초과를 일으킬 수 있습니다.
  • 반복문을 range(4)로 걸어서 data[i]와 data[j]의 문자열을 더해서 list에 추가하게 되면 100% 상태에서 런타임 에러(index)가 뜨게 됩니다.

 

 

5619번: 세 번째

서로 다른 자연수 n개 a1, a2, ..., an이 주어진다. 이때, a1, ... an에서 2개를 선택해서 붙여서 새로운 수를 만들 수 있다. 이때, 세 번째로 작은 수를 구하는 프로그램을 작성하시오. 예를 들어, 3과 4

www.acmicpc.net

 

    'Algorithm/Beakjoon' 카테고리의 다른 글
    • [Beakjoon] 백준 1817번 Python
    • [Beakjoon] 백준 16237번 Python
    • [Beakjoon] 백준 1902번 Python
    • [Beakjoon] 백준 23351번 Python

    티스토리툴바