목록Algorithm (23)
영호
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c5uAzA/btrE4WlgNJ4/dlHhSCHWzlGcpE88fkp2K0/img.png)
문제 링크 https://www.acmicpc.net/problem/1213 1: print("I'm Sorry Hansoo") sys.exit() answer = '' for i in range(0, len(word), 2): if word_count[word_list[i]] % 2 == 1: word_count[word_list[i]] -= 1 else: answer += word_list[i] tmp = answer[::-1] answer += odd_alphabet answer += tmp print(answer) Git https://github.com/youngh0/Algorithm/blob/master/greedy/boj_1213.py
문제 설명 인프런 파이썬 알고리즘 문제풀이(코딩 테스트 대비) 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com N, M이 주어지고, 정 N면체, 정 M면체로 이루어진 주사위가 있다고 가정하고, 두 개의 주사위를 던져 나올 수 있는 합 중 확률이 가장 큰 수를 출력합니다. 정답이 여러 개면 오름차순으로 출력합니다. 나의 풀이 처음에 permutations를 이용해 푸려고 했지만 잘못된 접근이었습니다. 2중 for문을 통해 해결했습니다. Code import sys # sys.stdin=open("input.txt", "r") n, m=map(int, input().split()) ..
문제 링크 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 나의 풀이 주어진 데이터 중 회의가 끝나는 시간이 빠른 회의를 기준으로 하여 회의를 시작하면 된다. sort()를 이용해 정렬을 하는데, 다중 조건을 사용해 정렬했다. 우선 회의가 끝나는 시간을 기준으로 정렬하고, 회의 시작 시간으로 정렬을 하였다. 다중 조건을 이용한 python정렬 Code # https://www.acmicpc.net/problem/1931 # 회의실 배정 meeting_nums = int(input()) meetings = [] for _ in range(meeting_nums)..
문제 설명 인프런 파이썬 알고리즘 문제풀이(코딩 테스트 대비) 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com 학생들의 시험 점수가 주어지면 학생들의 평균을 구하고, 평균과 점수 차가 가장 적은 학생의 번호를 구하라. 이때 점수 차가 같다면 높은 점수의 학생 번호가 정답이고, 점수차와 점수 모두 같을 경우 학생 번호가 빠른 학생이 정답이다. 출력 : 평균 학생 번호 나의 풀이 round()를 이용해 소수 첫째 자리에서 반올림해 학생들의 평균을 구합니다. 평균 점수 - 첫 학생의 점수를 min 변수에 할당한 뒤, 두 번째 학생 점수와 평균 점수의 차를 min과 비교합니다. min >..
문제 링크 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 나의 풀이 처음 잘못된 접근 문제에서 행렬을 변환하는 연산은 어떤 3 × 3 크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0) 이 부분을 읽지 못해 DFS로 접근하려는 생각을 했습니다. 위 조건 때문에 DFS로 접근하는 것은 잘못된 접근입니다. Greedy를 이용한 접근 정말 간단하게 행렬을 탐색하며 비교하는 행렬과 다르면 해당 위치를 기준으로 3X3 만큼 뒤집어 주면 ..
문제 설명 인프런 파이썬 알고리즘 문제풀이(코딩 테스트 대비) 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com 1 ~ 100 사이의 자연수 카드 N장 중 3장을 뽑아 합한 수 들 중 K번째로 큰 수를 출력하는 문제입니다. 나의 풀이 3장을 뽑을 때 각 카드들의 순서는 중요하지 않기 때문에 itertools의 combination을 사용해 풀었습니다. combination을 잘 모르시면 이 글을 참고해주세요. 중복 제거를 위해 set자료형을 사용했습니다. Code import sys from itertools import combinations # sys.stdin=open("inp..
문제 링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 나의 풀이 bfs를 이용해 풀었습니다. 입력 값 중 익은 토마토들을 탐색해 tomatos배열에 저장합니다. [x,y, 언제 익었는지] -> 처음부터 익은 토마들이기 때문에 처음에는 [x, y, 0]으로 저장합니다. tomatos를 이용해 queue를 생성합니다. bfs를 수행합니다. bfs는 현재 위치에 있는 토마토가 익은 위치에서만 탐색을 진행하기 때문에 if문을 이용..
문제 링크 https://www.acmicpc.net/problem/18405 나의 풀이 입력을 받으면서 초반 virus들의 정보를 [virus_num, 0(time), x, y] 별도의 list에 저장한다. virus_num이 낮은 것들부터 전염이 되기 때문에 위 list를 정렬한다. virus정보들을 담은 list를 q로 만든다. time이 끝날 때까지 bfs알고리즘을 수행한다. Code # https://www.acmicpc.net/problem/18405 from collections import deque n, k = map(int,input().split()) graph = [] virus_info = [] for i in range(n): graph.append(list(map(int,inp..