Meda의 DevLog
close
프로필 배경
프로필 로고

Meda의 DevLog

  • 분류 전체보기 (35)
    • 알고리즘 (22)
      • 백준 (18)
      • SWEA (4)
    • 우아한테크코스 (5)
      • Lv.1 (0)
    • 스터디 (5)
      • 코틀린 (5)
    • 빅데이터분석기사 (2)
    • 기타 정보 (1)
    • 잡담 (0)
  • 홈
  • 태그
  • 방명록
  • Github
[백준/Python] 11279번. 최대 힙

[백준/Python] 11279번. 최대 힙

문제https://www.acmicpc.net/problem/11279   풀이제목 그대로 최대 힙 자료구조를 사용하는 문제이다.최대 힙은 부모 노드가 자식 노드보다 큰 값을 가지는 완전 이진 트리로 구현된 자료구조이고따라서 최대힙의 Root 노드에는 항상 전체 트리의 최대값이 저장된다. 파이썬은 편리하게도 heapq 모듈을 import하면 최소 힙 자료구조를 사용할 수 있지만, 애석하게도 최대 힙은 구현이 되어있지 않은데, 모든 값에 -를 붙여서 뒤집으면 최소힙을 최대 힙처럼 사용이 가능하다.(마이너스를 붙여서 야매로 뒤집는건 최대 힙 말고도 내림차순 정렬 할때도 유용하다.) heap 모듈은 힙으로 사용할 빈 리스트를 선언하고 heapq.heappush(리스트, 값)으로 값을 push하고heapq.he..

  • format_list_bulleted 알고리즘/백준
  • · 2024. 11. 15.
  • textsms
[백준/Python] 1927번. 최소 힙

[백준/Python] 1927번. 최소 힙

문제https://www.acmicpc.net/problem/1927   풀이제목 그대로 최소 힙 자료구조를 사용하는 문제이다.최소 힙은 부모 노드가 자식 노드보다 작은 값을 가지는 완전 이진 트리로 구현된 자료구조이고따라서 최소힙의 Root 노드에는 항상 전체 트리의 최솟값이 저장된다. 파이썬은 편리하게도 heapq 모듈을 import하면 최소 힙 자료구조를 사용할 수 있다. 힙으로 사용할 빈 리스트를 선언하고 heapq.heappush(리스트, 값)으로 값을 push하고heapq.heappop(리스트)로 Root노드의 최소 값을 pop하다. 간단하다. heapq 모듈은 최대 힙의 구현은 없지만 최소 힙을 이용해 최대 힙도 구현할 수 있다.    정답 코드import heapqimport sysinpu..

  • format_list_bulleted 알고리즘/백준
  • · 2024. 11. 15.
  • textsms
[백준/Python] 2167번. 2차원 배열의 합

[백준/Python] 2167번. 2차원 배열의 합

문제https://www.acmicpc.net/problem/2167  풀이무식하게 그냥 더하거나 (PyPy3만 통과 가능), 누적합 배열을 사용하거나 둘 다 가능하다   누적합을 이용하는법의 풀이는 다음과 같다.먼저 보라색 영역의 합을 구한다고 가정하자정답은 6+7+10+11 = 34이다 색칠된 모든 영역을 더한 다음 (1+2+3 + 5+6+7 + 9+10+11 = 54)초록색 영역 (1+2+3 = 6)을 빼고파란색 영역인 (1+5+9 = 15)를 빼고겹쳐서 두번 빼버린 1을 다시 더하자결과는 54 - 6 - 15 + 1 = 34로 보라색 영역만 더한 값이 나온다. 미리 "(0,0)부터 각각의 좌표까지의 영역"을 더해서 저장해놓은 누적합 이차원 배열을 만들고보라색-초록색-파란색+빨간색 위치의 숫자만 계..

  • format_list_bulleted 알고리즘/백준
  • · 2024. 11. 15.
  • textsms
[백준/Python] 11047번. 동전 0

[백준/Python] 11047번. 동전 0

문제https://www.acmicpc.net/problem/11047   풀이전형적인 그리디 문제이다목표 금액보다는 작은 동전중 가장 큰 숫자를 계속해서 취해 나가면 된다. 동전의 가치는 오름차순으로, 이전 숫자의 배수로 주어지기때문에 3 900 300 800이런 테스트 케이스와 같이 800을 먼저 취했더니 300을 취할 수 없는 상황같은건 고려하지 않아도 된다.     정답 코드N, K = map(int, input().split())coins = [int(input()) for _ in range(N)]coins.sort(reverse=True)answer = 0for coin in coins: while coin

  • format_list_bulleted 알고리즘/백준
  • · 2024. 11. 15.
  • textsms
[백준/Python] 9017번. 크로스 컨트리

[백준/Python] 9017번. 크로스 컨트리

문제https://www.acmicpc.net/problem/9017  풀이낚시 없는 정직한 구현문제다.6명 이상 출전하지 않은 팀은 아예 없는셈 쳐야 하는것에 주의 하면 된다. 6명이 출전하지 않은 팀을 set으로 저장해두고팀명을 key, 팀원의 순위를 List로 담을 defaultdict(list)를 선언하고 6명 이상인 팀의 순위를 6명 이하로 출전한 팀을 제외하는것을 고려하며 담아준다. 딕셔너리를 순회하며 리스트의 0~3번 인덱스의 값의 합, 4번 인덱스의 값, 팀명을 담은 리스트를 만들고 .sort()로 오름차순 정렬한뒤, 정렬된 첫번째 원소의 팀명(2번 인덱스)을 출력하면 끝.   정답 코드from collections import defaultdictT = int(input())for _ i..

  • format_list_bulleted 알고리즘/백준
  • · 2024. 11. 15.
  • textsms
[백준/Kotlin] 28702번. FizzBuzz

[백준/Kotlin] 28702번. FizzBuzz

문제https://www.acmicpc.net/problem/28702  풀이3개의 입력값 다음의 올 숫자( targetNumber )에 대한 FizzBuzz값을 찾는 문제이다.특정 숫자의 FizzBuzz값은 아래와 같이 3과 5의 나머지 연산을 통해 쉽게 구할 수 있다.fun getFizzBuzz(i: Int): String { if (i % 3 == 0 && i % 5 == 0) { return "FizzBuzz" } if (i % 3 == 0) { return "Fizz" } if (i % 5 == 0) { return "Buzz" } return i.toString()} 3개의 연속된 입력값중에 정수 i가 하나라도 존재하면..

  • format_list_bulleted 알고리즘/백준
  • · 2024. 10. 22.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (35)
    • 알고리즘 (22)
      • 백준 (18)
      • SWEA (4)
    • 우아한테크코스 (5)
      • Lv.1 (0)
    • 스터디 (5)
      • 코틀린 (5)
    • 빅데이터분석기사 (2)
    • 기타 정보 (1)
    • 잡담 (0)
최근 글
인기 글
최근 댓글
태그
  • #백준
  • #오블완
  • #알고리즘
  • #Kotlin
  • #티스토리챌린지
  • #Python
  • #프로그래밍
  • #코틀린
  • #문자열
  • #우테코
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바