반응형

🔧알고리즘

    [BOJ,백준][파이썬] 16918, 봄버맨

    문제링크 ✨IDEA N이 작기에 매초마다 모든 maps(graph)를 보면서 폭탄을 터뜨리거나 폭탄을 설치하면 된다 폭탄이 새로설치되면 그 위치는 3으로 표시하고 폭탄이 존재하지 않는 위치는 -1로 표시한다 init() : 시작시 폭탄이 설치되어있는 위치를 3초라는 의미에서 3으로 변경, 폭탄이 없는 자리는 -1 is_in(r, c) : 폭탄을 터트릴 때 maps(graph) 밖으로 나가는 것을 체크하는 함수 insert_bomb(R, C) : 폭탄이 설치되어있지 않은 위치(-1)이면 새롭게 폭탄을 설치(3) bomb() : 맵 전체를 탐색해 폭탄이 있는 위치를 검색하고 폭탄을 터뜨림 deal_time() : 일초가 지날 때마다 맵에 기재된 시간을 갱신 CODE import sys from collect..

    [프로그래머스][파이썬] 옹알이(1)

    문제링크 ❓IDEA 문제 설명 그대로 "aya", "ye", "woo", "ma" 네 단어를 각자 최대 한 번씩 사용해서 가능한 단어 리스트를 만든 후 babblings가 이중에 몇개를 포함하는지 계산하면 된다. 단어수가 4개이고 최대 한 번만 사용가능하기에 순열을 사용하여 리스트를 만들면 된다 from itertools import permutations # 선택된 순열을 이어 붙여 단어로 만듦 def make_word(candidates, arr): for i in range(len(arr)): candidates.append("".join(arr[i])) def solution(babbling): babblings = ["aya", "ye", "woo", "ma"] candidates = [] # ..

    [swea] [Java] 5215. 햄버거 다이어트

    [문제링크] 주어진 만족도, 칼로리 쌍을 이용하여 최대 칼로리 이하에서 최대의 만족도를 구하는 문제이다 ✨IDEA : 낮은 칼로리 순으로 정렬 후 합쳐볼까.. 높은 만족도 순으로 정렬 후 합쳐볼까... 어떻게 조합을 해볼까 고민이 될수도 있지만 그냥 모든 조합들을 다 생각하면 된다 즉, 해당 쌍을 포함한 것 안포함한 것의 모든 경우를 계산한 뒤 주어진 칼로리 제한 안에서 가장 높은 만족도를 가지는 것을 출력! 처음 buger메소드를 구현할 때는 cnt가 주어진 K번까지 부분집합 경우를 체크하고 최댓값을 체크했으나 그럴필요 없이 재귀함수가 돌아가는 중 제한된 칼로리 보다 높아지면 바로 짤라주면 더 효율적인 풀이가 될 수 있다 package SWEA; import java.io.BufferedReader; ..

    [BOJ][파이썬, 자바]11660 구간 합 구하기5

    ✨ 문제 링크 Idea : 누적합을 이용한 부분합 구하기(행 마다 누적합 구한 후 구간합으로 자르기) 이차원배열의 내용들을 쭉 편 후 일차원배열에 누적합을 구한 후 사용하려 했으나 그렇게 하면 시작부분이 첫번 째 열이 아닐시에 빠지는 부분이 있다 예를 들어, 아래와 같은 입력 예제에서 위와 같은 방법을 사용하면 (2, 2)에서 (3, 4)에 해당하는 구간을 구하면 3 + 4 + 5 + 4 + 5 + 6이 나와야하나 처음 언급한 방식으로 접근하면 3까지 포함된다. 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 따라서 행 마다의 누적합을 구한 후 입력에 따라 구간합으로 짤라서 사용한다 자바 코드 import java.io.BufferedReader; import java.io.IOException..

    [프로그래머스]체육복, 파이썬(python)

    문제링크 ✨Idea 여분의 체육복이 있는 경우도 도난당하게 된다면 빌려줄 수가 없으므로 lost와 reserve에서 서로 겹치는건 뺀다 그 후 체육복이 있는 인덱스는 True로 처리 후 여분의 학생이 앞 뒤를 체크하며 빌려주면 된다 그러나 아래의 소스코드에서 오름차순 과정이 없다면, 먼저 좌쯕체크 후 우측을 체크하는과정만을 거쳐 예외 케이스가 발생한다 예를 들어 아래와 같은 상황이다 n = 5 lost = [2, 4], reserve = [3, 1] 정상적인 상황이라면 1번 학생이 2번에게 3번 학생이 4번에게 빌려 줄 수 있으나, 정렬을 하지 않는다면 3번이 2번에게 빌려주어 4번 학생은 빌릴 수가 없게되므로 처음에 reserve를 정렬하는 과정이 필요하다 (2021년 8월 30일 테스트케이스가 추가되..

    [swea]1204. 최빈수 구하기, 파이썬(python)

    문제 링크 학생들의 점수의 최빈값을 구하는 문제이다 Idea : 계수정렬, 최빈값이 여러개일 때 인덱스 찾기 학생 점수의 최대값이 100이라고 계수정렬할 리스트를 [0]*101로 설정하지 않아도 된다, 받은 리스트 중 제일 큰 값에 1 만 더한 길이만큼으로 생성해도 충분하기 때문! 파이썬의 max와 index를 이용하면 제일 큰 값 중 제일 작은 인덱스를 알려주기에 인덱스가 여러개일 경우 아래와 같은 방법을 사용할 수 있다. T = int(input()) for i in range(1, T+1): n = int(input()) arr = list(map(int, input().split())) cnt_arr = [0] * (max(arr) + 1) for j in arr: cnt_arr[j] += 1 t..

    [swea]1983. 조교의 성적 매기기, 파이썬(python)

    문제링크 🎃Idea 목표는 원하는 학생의 번호가 주어지면 해당 학생의 성적을 조회하고싶다 학생들의 총점과 함께 학생번호 조회를 위해 인덱스를 동시에 저장한다 총점이 높은 순으로 정렬한다 여기서 조금 헤맸는데 리스트안에 [(인덱스, 점수), ..., (인덱스, 점수)] 로 저장을 했기에 원하는 위치와 순서 조회가 쉽지않았다, 이를 위해 차피 점수순으로 정렬을 해놨기에 tmp에 인덱스를 따로 빼주고 몇등인지 조회를 하기 위해 tmp.index(k)를 사용 해당 학점을 받는 학생 수가 (학생수 //10)로 정해져 있기에 이를 나눠준 후 학점을 계산한다 소스코드 score = ["A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"] for tc in range..

    [swea]2056. 연월일 달력, 파이썬(python)

    연월일 순으로 구성된 8자리의 날짜가 입력으로 주어졌을 때 해당 날짜의 유효성을 판단하는 문제이다 if & else문을 통하여 1~12월을 벗어나거나 2월에서 28일을 벗어나는 등의 상황에서 유효하지 않다고 처리할 수 있겠지만 처리할 케이스가 많고 길어질 것 같아 datetime 라이브러리를 사용하였다 datetime.date와 try&except를 통해 유효하지않으면 -1 유효하면 형식에 맞게 출력하는 방식으로 작성하였다 통과하긴 했는데 실제시험에서도 datetime 라이브러리가 사용가능할 지 아닐지는 잘 모르게따 import datetime # import sys # sys.stdin = open("input.txt", "r") T = int(input()) for ct in range(1, T+1)..