-
'''. 덧셈 기호를 사용하지 않고 두 정수의 덧셈을 하는 문제.. XOR, AND 비트연산으로 덧셈을 구현할 수 있다. XOR 연산은 덧셈 시 각 자릿수가 갖는 값과 같은 값을 리턴하고, AND 연산은 덧셈 시 그 자릿수에서 자리올림이 발생하는지를 알려준다. 자리올림이 나타날 때마다 XOR 연산을 반복해, 더 이상 자리올림이 나타나지 않을 때까지 루프를 수행한다.. 위 연산 방법은 덧셈 하려는 두 수...
-
* 백준에 제출한 코드를 IDE로 가져와 디버그할 때 콘솔 입력을 파일입력으로 바꾸기input = open("in.txt", "r").readline파이썬에서 백준의 파일 입력은 input() 함수를 사용하는데, input() 함수는 줄 단위로 문자열로 콘솔 입력을 받는 함수로서 파일 입력 관련해서 지원되는 함수 readline()과 기능이 거의 동일하다. 따라서 input이라는 이름의 변수를 open().r...
-
'''. 슬림프: 길이가 글자면 AH일 것. 글자 이상이면 AB+슬림프+C 또는 A+슬럼프+C일 것. 슬럼프: D 또는 E로 시작하고, 그 뒤에 F가 회 이상 붙으며, 그 다음으로 또 다른 슬럼프가 오거나 G가 올 것. 어떤 문자열이 '슬림프 + 슬럼프'의 형식으로 이루어져 있는지 검사하는 문제.. 슬림프인지 여부는 재귀호출과 슬라이싱으로 간단하게 구현 가능하다. 얼핏 보면 슬럼프인지 여부 또한 재...
-
'''. n x n 크기의 격자로 이루어진 배열이 개 있는데, 각 배열은 또는 로 이루어져 있으며 이 두 배열의 각 격자를 or 연산한 결과가 우리가 얻고자 하는 비밀지도. input으로는 각 행의 또는 을 진수로 보아 그 숫자를 진수로 기록한 값이 저장된 차원 배열 개가 들어올 때, 우리가 얻고자 하는 비밀지도를 리턴하는 문제.. 파이썬에서 루프를 사용하는 알고리즘은 간단한 경우에는 모두 lis...
-
우선순위큐를 이용한 그리디 문제./*. 작업의 수행이 요청된 시간 그리고 그 작업을 수행하는 데 소요되는 시간이 서로 다르거나 같은 수개의 작업이 있고, 이들 작업은 한 번에 하나씩만 처리할 수 있다. 어느 한 작업을 처리하는 중일 때 다른 작업이 요청된 시간이 지나면, 그 작업은 시작되지 않고 대기된다. 모든 작업을 다 수행한다 할 때, 요청된 시간부터 종료된 시간까지의 시간의 평균을 최소...
-
적절히 객체화를 잘 하면 비교적 간결하게 구현할 수 있는 구현문제./*. 과 로 채워진 차원 격자판 두 개가 입력으로 들어오며, 각각은 다음 의미를 갖는다. game_board: 빈칸()과 채워진 칸()으로 이루어진 격자판. table: table 배열의 은 블록을 의미하고 은 빈칸을 의미한다. 은 상하좌우로 둘 이상 인접할 수 있으며, 이 경우 이 인접한 모양대로 table에 블록이 ...
-
Prim’s algorithm을 통해 간단하게 해결할 수 있는 MST 문제./*. N x N 크기의 격자칸에 격자칸이 갖는 '높이'가 주어지고 height라는 정수값이 주어질 때, 한 격자칸에서 다른 격자칸으로 이동할 때 높이차가 height 이하라면 이동하며 발생하는 cost가 없으나 height를 초과한다면 그 초과한 값만큼 cost가 발생한다. 이때, 발생하는 cost 합이 최소가 되도록...
-
간단한 차원 DP문제. /*. strs라는 문자열 배열과 t라는 문자열이 주어질 때, strs 문자열 배열의 원소들로 t라는 문자열을 만드는 경우의 수가 얼마나 되는지를 구하는 문제. (단, strs 배열의 원소의 길이는 최대 .) . dp[i] : strs 문자열 배열을 이용해 t 문자열의 i번 인덱스까지 만드는 경우의 수 로 dp 배열을 정의한 후, 다음과 같은 점화식을 통해 DP 문...
알고리즘 문제풀이 (8)