🧐 백준 1427, 1676, 2577, 2711  _ 단일 숫자에 대한 리스트를 이용한 접근

🤫 해결의 실마리 

🤔 단일숫자나 문자열에 대한 접근이나 리스트로 어떻게 바꿀까?

🙃 단일 숫자의 경우는 다음과 같다.
1. 단일 숫자를 문자열로 바꾼다.
2. 문자열을 리스트에 넣는다.
str_num = str(n)
str_list = list(str_num)​

🙃 문제에 맞는 연산 진행 후 다시 숫자로 출력하고 싶다면?
3. 리스트값들을 출력
print(*sorted(num, reverse = True) , sep = '')
# sep=''를 통해 원소간의 구분자인 공백을 없애줌으로
# 9 9 9 9 9 9 9 9 8 을
# 999999998 로 출력​


🧐 사용법에 대한 정리.

num = int(input())
str_x = list(str(num))          # ['1', '2', '3', '4', '5', '6']
int_x = list(map(int, str_x))   # [1, 2, 3, 4, 5, 6]

print(*int_x)           # 1 2 3 4 5 6
print(*int_x, sep="")   # 123456


 
🤔  원하는 원소를 어떻게 지울까?  pop, del, remove 함수! 
# cf-1  pop
a = [1,2,1,3,4,5,1]
removed = a.pop(1)  # 1번째 index 삭제 단, return 가능

print(a)            # [1, 1, 3, 4, 5, 1]
print(removed)      # 2   <-- pop한 원소를 return 가능
# cf-2  del  -> pop과 다르게 리스트의 범위를 지정해 삭제 가능
a = [1,2,1,3,4,5,1]

del a[:2]
print(a)        # [1, 3, 4, 5, 1]
#cf-3   remove  -> 위와 달리 지우고자 하는 인덱스가 아닌 값을 입력
for _ in numbers :
    numbers.remove(3)




🤫  solution_1427

# 입력: 999998999

num = list(map(int, input()))  # 공백없이 입력받을 때, list에 저장하는 법
print(*sorted(num, reverse = True) , sep = '')
# sep=''를 통해 원소간의 구분자인 공백을 없애줌으로
# 9 9 9 9 9 9 9 9 8 을
# 999999998 로 출력

# cf. end옵션을 사용하면 그 뒤에 나오는 출력값과 구분을 짓는 구분자 역할을 한다.
print(*sorted(num, reverse = True) , end = " hello ")
print(num)
# 9 9 9 9 9 9 9 9 8 hello [9, 9, 9, 9, 9, 8, 9, 9, 9] 가 출력


🤫  solution_1676

def fac(n):
    if n <= 1:
        return 1
    else:
        return n * fac(n - 1)

N = int(input())
n = fac(N)

# 숫자를 리스트에 한자리씩 넣기 (숫자->문자열)
str_num = str(n)
str_list = list(str_num)

cnt = 0
for i in reversed(str_list):
    if i == '0':
        cnt += 1
    else:
        break
print(cnt)

 

🤫  solution_2577

num = []
for i in range(3):
    n = int(input())
    num.append(n)

mul = 1
for i in range(3):
    mul *= num[i]

str_x = list(str(mul))
int_x = list(map(int, str_x))

out_ls = []
for i in range(10):
    out_ls.append(int_x.count(i))

for i in range(10):
    print(out_ls[i])

 

 

🧐 백준 1292 , 4458 풀이 및 사용함수

🤫 해결의 실마리 

🤔 리스트 사용의 핵심! 인덱스 슬라이싱 
인덱스 슬라이싱에 대한 응용방법을 아래 해설을 통해 볼 수 있는데, [:]를 이용한다.



🤫  solution_1292

A, B = map(int, input().split())
num_sequences = []

for i in range(1000):
    for j in range(i):
        num_sequences.append(i
print(sum(num_sequences[A-1:B]))


🤫  solution_4458

for i in [input() for _ in range(int(input()))]:
    print(i[:1].upper() + i[1:])

 

 

 

🧐 백준 1157  풀이 및 사용 함수

🤫 해결의 실마리 

🤔 원소가 겹치지 않아? set 자료구조 
주로 사용하는 리스트로 set을 변환하는 방법은 다음과 같다.
a_set = set(a)
lst = []
for i in a_set:
    lst.append(a.count(i))


🤫  solution_1546

a = list(str(input()).upper())
a_set = set(a)
cnt = []
for i in a_set:
    cnt.append(a.count(i))
if cnt.count(max(cnt)) <= 1:
    print(max(a, key = a.count))
else:
    print("?")

 

🧐 백준 1292 , 4458 풀이 및 사용함수

🤫 해결의 실마리 

🤔 리스트 사용의 핵심! 인덱스 슬라이싱 
인덱스 슬라이싱에 대한 응용방법을 아래 해설을 통해 볼 수 있는데, [:]를 이용한다.



🤫  solution_1292

A, B = map(int, input().split())
num_sequences = []

for i in range(1000):
    for j in range(i):
        num_sequences.append(i
print(sum(num_sequences[A-1:B]))


🤫  solution_4458

for i in [input() for _ in range(int(input()))]:
    print(i[:1].upper() + i[1:])

 

🧐 백준 2309,  2822 풀이 및 사용함수

🤫 해결의 실마리 

🤔 정렬을 스스로 해주는 내장함수, sorted를 이용하자! 

정렬 함수는 다음 2가지를 사용할 수 있다.

a.sort()
sorted(a)

둘의 차이는 바로 반환의 여부이다.
a.sort의 경우, 반환을 해주지 않기에 print문에 넣어주면 오류가 발생하게 된다.
하지만 sorted의 경우, 값의 반환이 이루어질 수 있어서 print문에서도 오류가 발생하지 않는다.


🤔 cf. 출력 조건에 따라 다음과 같이 작성하자!
sorted(idx_list)  => [3, 4, 5, 6, 8]
*sorted(idx_list) =>   3 4 5 6 8


🤫  solution_2309

dwarf = [int(input()) for _ in range(9)]

for i in range(len(dwarf)):
    for j in range(i+1, len(dwarf)):
        if (sum(dwarf) - (dwarf[i] + dwarf[j])) == 100:
            dwarf1, dwarf2 = dwarf[j], dwarf[i]  # out of index range 조심
            dwarf.remove(dwarf1)
            dwarf.remove(dwarf2)
            break
        else:
            continue

print(*sorted(dwarf), sep = "\n")

 

🤫  solution_2822

score = [int(input()) for _ in range(8)]
total = list(sorted(score, reverse=True))
print(sum(total[:5]))

idx_list = []
for i in range(5):
    idx_list.append(score.index(max(score)) + 1)
    score[score.index(max(score))] = -100
print(*sorted(idx_list))
# sorted(idx_list)  => [3, 4, 5, 6, 8]
# *sorted(idx_list) =>   3 4 5 6 8

 

 

🧐 백준 11047 풀이

🤫  solution_11047  (Greedy Algorithm)

N, K = map(int, input().split())

coin = sorted([int(input()) for _ in range(N)], reverse=True)

cnt = 0
while K != 0:
    for i in range(N):
        if coin[i] > K:
            i -= 1
        else:
            frequency = K // coin[i]
            K -= coin[i] * frequency
            cnt += frequency
print(cnt)

 

+ Recent posts