본문 바로가기

전체 글165

[백준/Python] 10810번 공 넣기 문제 ■ 10810번 공 넣기 문제 ■ 코드 풀이 아이디어는 다음과 같습니다. 1) 바구니 개수 N과 반복 횟수 M을 입력 받습니다. 2) basket이라는 list를 선언하고 값을 모두 0으로 초기화합니다. (공이 없는 바구니는 0을 출력해야 하므로) 3) M번 동안, 각각 i,j,k를 입력 받은 뒤 list의 값을 갱신하기 위해 for loop를 추가적으로 실행합니다. 4) 이 때, j 바구니 "까지" 값이 갱신되어야 하므로 반복문의 range는 (i, j+1)로 해줍니다. 5) 또한, 문제의 정의에 의해 바구니는 '1번'부터 존재하지만 list의 index는 '0번'부터 존재하므로 list의 값을 갱신할 때는 index에 -1을 빼서 업데이트 해줍니다. 5) list 값을 공백으로 출력하기 위해 end .. 2023. 3. 19.
[백준/Python] 2562번 최댓값 문 ■ 2562번 최댓값 문제 ■ 코드 풀이 아이디어는 다음과 같습니다. 1) 대소 비교를 위한 num 변수와 index 저장을 위한 idx 변수를 만듭니다. 2) 입력 받은 값을 num과 비교하고, 값이 num보다 크면 num에 입력 받은 값을 저장하고 idx를 갱신합니다. 3) num과 idx를 출력합니다. num = 0 idx = 0 for i in range(9): temp = int(input()) if temp > num: num = temp idx = i print(num, idx+1) 4) 참고로 파이썬 list 자료형에는 index라는 메서드도 있다고 합니다. 값을 입력하면, 해당 값의 index를 반환하는 메서드인데 이 방법을 활용해서 문제를 풀 수도 있겠네요. a = [1,2,3,4] p.. 2023. 3. 18.
[백준/Python] 10871번 X보다 작은 수 문제 ■ 10871번 X보다 작은 수 문제 ■ 코드 풀이 아이디어는 다음과 같습니다. 1) 문제에서 요구한 N, X, A를 각각 입력 받습니다. 2) 이 때, 정수 배열 A는 str type으로 그대로 입력 받고, for loop를 실행하면서 정수로 변경해줍니다. 3) for loop을 돌면서 입력받은 수 X와 대소 관계를 비교하고 X보다 작으면 i를 print합니다. 4) 이 때, print 함수의 end를 공백(' ')으로 설정해주면 줄바꿈 대신 공백으로 숫자를 print합니다. N, X = map(int, input().split()) A = input() for i in map(int, A.split()): if i < X: print(i, end = ' ') print 문은 평소에도 굉장히 자주 사용.. 2023. 3. 18.
[백준/Python] 10807번 개수 세기 문제 ■ 10807번 개수 세기 문제 ■ 코드 풀이 아이디어는 다음과 같습니다. 1) 문제에서 요구한 N, L, V를 각각 입력 받습니다. 이 때, 정수 list L은 map으로 변경 후, 마지막에 list로 변환해줍니다. 2) list 내 같은 값을 찾아주는 메서드인 count를 활용하여 정답을 출력합니다. N = int(input()) L = list(map(int, input().split())) V = int(input()) print(L.count(V)) 3) 내장 메서드를 활용하지 않고 아래와 같은 방법으로 풀 수도 있습니다. 4) 두 코드 모두 소요 시간은 40ms로 동일하지만 내장 메서드를 활용한 코드가 조금 더 읽기 편하고 파이썬스러운 느낌이 드네요. (그러나 N을 왜 문제에서 입력 받으라고 .. 2023. 3. 16.
[백준/Python] 10951번 A+B-4 문제 ■ 문제 ■ 코드 풀이 아이디어는 다음과 같습니다. 1) 처음에는 제가 문제를 이해하지 못해서 블로그에서 풀이를 찾아보니 while문과 try, except를 활용하여 다들 코드를 작성하셨더라고요. 핵심은 무한히 두 수를 더하는 반복문 속에서 다른 입력이 입력되면 종료하는 알고리즘입니다. while True: try: a,b = map(int, input().split()) print(a+b) except: break 2) 위의 코드처럼 while문을 활용하면 정수 이외 다른 입력이 들어오면 error가 발생하여 except 문의 break가 활성화되며 반복문이 종료됩니다. 이 코드를 채점해보면 코드 길이는 105B, 시간은 48ms가 소요된 것을 알 수 있습니다. 3) 그런데 여기서 'sys.stdin.. 2023. 3. 16.
[백준/Python] 2439번 별 찍기 -2 ■ 백준 2439 별 찍기 -2 문제 ■ 코드 풀이 아이디어는 다음과 같습니다. 1) 줄의 개수 N을 입력 받습니다. 2) 줄의 개수 N개는 한 문장 내 글자 수와 동일합니다. 3) 첫 번째 줄에는 공백 4칸과 별 1개, 총 5개의 글자가 들어가야 합니다. 파이썬에서 str type 변수를 곱하면 곱한 수 만큼 반복됩니다. 따라서 공백은 반복 마다 N에서 별이 들어가야 할 글자 수 -(i+1) 만큼을 빼줍니다. 반대로 별은 반복 마다 i+1만큼 더해줍니다. (range(N)이면, i의 범위는 0부터 N-1이니까요.) N = int(input()) for i in range(N): print(' '*(N-1-i)+'*'*(i+1)) 2023. 3. 15.