Study 85

[BOJ] 19621. 회의실 배정 2

www.acmicpc.net/problem/19621 19621번: 회의실 배정 2 서준이는 아빠로부터 N개의 회의와 하나의 회의실을 선물로 받았다. 각 회의는 시작 시간, 끝나는 시간, 회의 인원이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, www.acmicpc.net 문제: 회의실에 최대한 많은 사람들이 회의할 수 있도록 만들어라. 문제 이해하기!! 일반 회의실 배정 문제와 다른 문제였습니다. 각 회의마다 인원이 다르고 앞과 뒤의 회의랑 회의시간이 무조건 겹치기 때문에 브루트포스 방법을 쓰는 문제였습니다. 문제에서 시작시간이 순서대로 입력이 들어온다는 말이 없어서 sort()를 해주고 시작했습니다. dfs를 재귀적으로 썼고 종료 조건은 N보다 n이 커지면서 res보다 ..

Study/BOJ 2021.02.04

[BOJ] 17135. 캐슬디펜스

www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 문제: 캐슬디펜스에서 궁수가 얼마나 많은 적을 죽일 수 있는가? 문제 이해하기!! 한 바둑판에 병사들 여러개 놓고 1초 지날 때마다 한칸씩 전진하는데 마지막 칸의 밖의 칸에서 궁수가 대기타고 있고 그 대기타는 궁수의 범위안에 적이 들어오면 궁수는 쏴 죽입니다. 근데 궁수도 1초에 한 번씩 밖에 못 죽여서 모두를 죽일 수 없는 경우가 생깁니다. 그 때문에 이 문제가 생겼습니다. 즉, 궁수가 있는 칸까지 병사들이 온다면 그 ..

Study/BOJ 2021.02.03

[BOJ] 17471. 게리맨더링

처음에는 하.. 이걸 어떻게 풀어야 하나 생각했는데 보니까 N이 10개더라구요. 그래서 바로 브루트포스로 돌렸습니다!! ㅎㅎ 그러다가.. dfs로 돌리고 페일.. ㅠㅠ 그리고 bfs로 바꿔서 성공했습니다. (나중에 알았지만, dfs도 풀 수 있는데 하... 제가 다 만들어 놓은 코드에서 합계 계산을 잘 못 했더라구요 ㅠㅠ 까빙..) 풀이 방법은 각각의 N-a와 a개의 도시 조합을 나누어서 브루트포스를 돌리면 됩니다. dfs / bfs 방법 둘 다 가능한데, bfs가 쉽습니다... ㅎㅎ bfs 추천 드릴게요! 코드: from itertools import combinations def bfs_com(x, cnt): global res1 Q = connect.get(x)[:] while Q: tmpp = Q..

Study/BOJ 2021.02.02

[BOJ] 1219. 오민식의 고민

www.acmicpc.net/problem/1219 1219번: 오민식의 고민 첫째 줄에 도착 도시에 도착할 때, 가지고 있는 돈의 액수의 최댓값을 출력한다. 만약 오민식이 도착 도시에 도착하는 것이 불가능할 때는 "gg"를 출력한다. 그리고, 오민식이 도착 도시에 도착 www.acmicpc.net 문제: 민식이가 S 도시부터 E 도시까지 가서 벌 수 있는 돈의 최댓값을 구하여라. 민식이의 고민보다 더 고통스러운 고민이었던 것 같습니다..ㅠ 문제를 풀면서 16~17퍼에서 자꾸 WA가 떠서 정말 힘들었던 문제에요. 최종적으로 찾아낸 반례는 4 0 3 4 0 1 0 0 3 5 1 2 0 2 1 0 0 5 5 10 답: 5 입니다. 타임머신이나 웜홀에서 썻던 코드를 들고와서 재사용했던게 문제가 되네요. 밑을 ..

Study/BOJ 2020.11.08

[BOJ] 9251. LCS

www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 문제 : 최장 공통 부분 수열을 찾아라. ⊙ DP - 다이나믹 프로그래밍 제가 백준에서 코드 1등을 했습니다!! 감격쓰~~ ㅎㅎㅎ 감격을 뒤로 하고! 풀이 방법은 DP를 설정하고, DP에 한 배열에서 최장 공통 수열이 되는 대로 찾는 겁니다. 첫 번째 배열의 인덱스 처음부터 끝까지 하나씩을 순서대로 골라, 두 번째 배열 전체를 탐색하면서 둘이 같은지를 비교합니다. 그..

Study/BOJ 2020.11.06

[BOJ] 12865. 평범한 배낭

www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 문제 : 배낭 안에 들어갈 수 있는 최대 가치는? ⊙ DP - 다이나믹 프로그래밍 DP의 기본 문제 중 하나라고 할 수 있는 배낭 알고리즘입니다. 배낭 알고리즘은 계속해서 넣어야 하기 때문에 2차원 DP 배열이 필요하지만, 저는 그냥 배열을 2개 만들어서 참조형식으로 swap하는 형식을 택했습니다. DP가 움직이기 위해서는 전 단계의 DP 배열이..

Study/BOJ 2020.11.06

[BOJ] 1365. 꼬인 전깃줄

백준 문제 주소: www.acmicpc.net/problem/1365 1365번: 꼬인 전깃줄 첫 줄에 전봇대의 개수 N(1 ≤ N ≤ 100,000)이 주어지고, 이어서 N보다 작거나 같은 자연수가 N개 주어진다. i번째 줄에 입력되는 자연수는 길 왼쪽에 i번째 전봇대와 연결된 길 오른편의 전봇대가 www.acmicpc.net 문제 : 전깃줄이 겹치지 않게 하는 최대 갯수는? ⊙ 최장 증가 수열 ⊙ 메모이제이션(다이나믹 프로그래밍 - DP) ⊙ 이분탐색 메모이제이션과 다이나믹 프로그래밍의 차이점을 잘 모르겠다.. 이거도 공부해봐야지! 아무튼 저 위의 3개를 딱 써서 하면 풀리는 문제이다. 코드 : import sys, bisect N = int(input()) arr = [0] + list(map(in..

Study/BOJ 2020.11.04

내장함수 사용하지 않은 파이썬으로 구현한 스택과 큐

스택과 큐를 간단하게 구현해봤습니다. 당연히 있는 내장함수를 쓴다면 효율이 좋지만, 만들 수도 있어야한다고 생각합니다. 큐의 경우는 scale만큼 사용하면 더 이상 못쓰기 때문에 주소값을 이어주는 형태를 만들어 주면 좋지만 큐의 성질을 알아보려는 구현 방법이기 때문에 이렇게 만들었습니다. # 스택! class Stack : def __init__(self, scale = 200): self.s = [0] * scale self.top = -1 def is_empty(self): if self.top == -1 : return 1 else: return 0 def pop(self): if self.is_empty() : print("스택 안에 데이터가 없습니다.") return 0 else : self.t..

내가 보려고 만든 CS지식) 빅엔디안 vs 리틀엔디안

간단히 말하자면, 둘 다 장단점이 있는 바이트오더 방식입니다. 리틀 엔디안 빅 엔디안 대표 회사 Intel IBM 형 변환 빠름 느림 숫자 비교 느림 빠름 디버깅 어려움 쉬움 캐리 값 처리 쉬움 어려움 네트워크 바이트오더 X O * 느림, 빠름, 어려움, 쉬움 등 은 각 방식의 상대적인 값입니다. 밑의 글이 너무 잘 써져 있어, 도움을 많이 받았습니다. 감사합니다. jhnyang.tistory.com/226 [endian 2탄]리틀엔디안 vs 빅엔디안, 각 엔디안방식의 장단점, NBO(network byte order), CPU별 엔디안 차이 안녕하세요! 드디어 오랜만에 찾아온 엔디안 방식 2탄입니다. 저번시간에는 엔디안의 개념적인 부분을 다뤘었는데요. - 바이트 오더 vs 비트 오더 - 빅 엔디안 방식..

Study/CS 2020.10.25

내가 보려고 만든 CS지식) 상속의 이유

상속을 왜 할까요? 간결하게 나타내자면, 1. 확장성 용이 2. 코드 간결화 3. 모듈화를 통한 코드 재사용성 증가 4. 유지보수 용이 -> 이로써 개발시간이 단축된다는 효과가 있습니다. 평소 연습하는 것처럼 작은 코드들은 별로 필요없지만, 현업에 가면 상속에 대한 지식이 없다면 정말 힘들거라 생각해요.. ㅎ jhnyang.tistory.com/73 [C++, java 언어공통]상속을 언제, 왜 쓸까?(inheritance, Is-A) [C언어, C++언어 완전 정복! 강의 목차 링크] 상황으로 상속 한번에 이해하기 자 우리가 메이플스토리 게임을 만들거예요 아주 대강~~~ 으로요 일단 메이플스토리 캐릭터들을 만들어봅시다. 음 마 jhnyang.tistory.com Category Photo by Clém..

Study/CS 2020.10.23
반응형