https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr 해설 : 문자열 S와 정수 N이 주어질 때, 문자열 S의 각 요소들을 n만큼 밀어서 변환시킨 결괏값을 출력하면 된다. 풀이 : ascii 기준으로 "a"는 97번, "A"는 65번이므로 주어진 문자가 대문자, 또는 소문자인지 판별하고 대문자라면 그 값을 ascii로 변환한 값에 65를 빼고 26으로 나눈 나머지를 변환시키고, 소문자라..
https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 해설 : N개의 행과 4개의 열로 이루어진 배열이 주어질 때 0번째 행부터 한 행씩 증가하며 4개의 열들 중 하나를 밟는다. 이 때, 직전에 밟았던 열은 밟을 수 없다. N번째 행까지 도달하였을 때 밟고 내려올 수 있는 칸들의 총합 중 가장 큰 값을 찾는 문제이다. 풀이 : DP를 이용하여 해결할 수 있는 문제이다. 각 열마다 선택할 수 있는..
Process와 Thread 쓰레드(thread)란 프로세스 안에서 프로그램을 실제로 실행하는 주체를 말한다. 쓰레드는 프로세스에 할당된 메모리나 자원을 사용하여 독립적으로 프로그램을 실행하게 된다. 그렇다면 여기서 프로세스는 뭘까? 쓰레드를 이해하려면 먼저 프로세스가 뭔지 알아야 할 것 같다. 프로세스(Process)를 이해하기 위해선 프로그램이 어떻게 실행되는가에 대한 이해가 필요하다. 이 과정을 쉽게 설명하면 디스크에 존재하는 어떤 프로그램이 실행될 때 그 프로그램을 실행하기 위해 메모리와 자원이 할당되고 프로그램의 바이너리 코드가 메모리에 올라가게 된다. 이 때 프로그램을 실행하기 위한 프로세스가 생성된다고 생각할 수 있다. 말 그대로, 프로세스는 실행 중인 프로그램을 의미한다. 프로세스가 생성되..
https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr 해설 : n이 주어졌을 때, n보다 큰 수들중 n과 이진수의 1 개수가 같은 가장 작은 수를 찾으면 된다. 풀이 : 숫자를 이진수로 변환하여 1의 개수를 카운트해서 리턴해주는 binary함수를 구현하고 c라는 변수에 n의 이진수 1 값의 개수를 넣어둔다. while문으로 n을 1씩 증가시켜가며 이진수 1의 개수가 c와 같은 값을 ..
https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 해설 : 괄호로 이루어진 문자열이 주어질 때, 이 문자열이 올바른 괄호 문자열인지 판단하는 문제이다. 풀이 : stack을 사용하는 가장 대표적인 문제라고 할 수 있다. stack에 괄호를 하나씩 넣으면서 짝이 맞으면 꺼내고 아니면 넣는다. 마지막에 stack에 원소가 있다면 올바르지 않고 없다면 올바른 괄호이다. 1..
https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 해설 : -5부터 5까지의 좌표가 존재하는 2차 좌표평면 위에서 "U","D","L","R" 4가지의 명령어를 사용하여 x축 또는 y축으로 이동한다. 주어지는 이동명령을 수행한 후 총 이동하는 거리를 출력하면 된다. 풀이 : "U","D","L","R"의 명령을 수행하기 위해 dictionary에 x,y좌표의 변홧값을 미리 입력해두었다. 주어진 명령을 실행하면서x좌표와 y좌표를 변화시켰는데 x좌표와 y좌표가 좌표평면의 범위를 넘어서지 않고, 이동경로를 기록해주는 answer 배열에 넣어주려 하였는데, 여기서 조건은 이미 이동한 경로일 경우 이..
https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 해설 : 각 행마다 x라는 값을 이진수로 변경하여 구현할 수 있는 n x n 사이즈의 배열이 두 개 주어진다. 이 때, 이진값이 1이면 벽이고 0이면 통로이다. 이 두 배열을 겹쳤을 때 벽인 부분은 # 통로 부분은 공백으로 표시해서 한 배열에 담으면 된다. 풀이 : arr1과 arr2에 대해 각 자릿수를 이진수로 변경하고 가공한 배열에서 두 배열의 겹치는..
https://programmers.co.kr/learn/courses/30/lessons/82612 코딩테스트 연습 - 부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr 해설 : 현재 내가 갖고 있는 돈 money와 놀이기구의 요금 price, 놀이기구 이용횟수 count가 주어질 때 놀이기구를 count번 이용하면 돈이 얼마 모자라는지 리턴하면 된다. 단, 놀이기구는 이용 횟수만큼 가격이 곱해진다. 풀이 : 놀이기구를 1번 이용한다면 가격은 1 x price이고 2번 이용한다면 (1 x price) +..
https://programmers.co.kr/learn/courses/30/lessons/87389 코딩테스트 연습 - 나머지가 1이 되는 수 찾기 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 입 programmers.co.kr 해설 : 자연수 n이 주어질 때, n을 x로 나누어서 나머지가 1이 되게 하는 가장 작은 수 x를 찾으면 된다. 풀이 : while문을 사용하여 1부터 n을 나누었을때 나머지가 1이 되는 수를 찾고 이를 리턴한다. 123456def solution(n): i = 1 while True: if n % i == 1: r..