https://www.acmicpc.net/problem/1026 해설 : 숫자가 담겨있는 A와 B 배열이 주어질 때 A[0] * B[0] + A[1] * B[1] + ...... + A[n-1] * B[n-1] 의 최솟값을 구하는 문제이다. 단, B정렬은 재배열할 수 없다는 조건이 있다. 풀이 : A배열과 B배열을 한 쪽은 오름차순, 한 쪽은 내림차순으로 정렬한 후 0번 인덱스부터 n-1번 인덱스까지 더해주면 되는 문제인데 B배열을 정렬할 수 없다는 조건이 있다. Python의 min과 max 함수를 이용하여 각 배열의 최솟값과 최댓값을 곱해준 뒤 답에 더해준다. 이후 배열에서 방금 사용한 값을 삭제해주는 식으로 구현하였다. 1 2 3 4 5 6 7 8 9 10 11 12 n = int(input())..
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 해설 : White와 Black으로 이루어진 N*M 사이즈의 체스판이 주어진다. 이 체스판을 8 x 8의 사이즈로 자르려고 할 때, W와 B가 번갈아가면서 나오는 체스판의 원래 패턴을 만들어주기 위해 최소 몇 개의 칸을 칠해야 하는지 찾는 문제이다. 풀이 : 8 x 8로 자를 수 있는 모든 경우에 대해 이중 for문으로 전부 탐색하며 W 또는 B로 색칠해야하는 개수를 카운트해준다. 이를 m..
https://programmers.co.kr/learn/courses/30/lessons/12948 코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr 해설 : 핸드폰 번호가 주어졌을 때 핸드폰 번호의 뒷 4자리를 제외한 나머지 숫자들을 모두 * 로 변환하여 출력하는 문제이다. 풀이 : Python의 list slicing을 이용하여 뒷 4자리를 제외한 나머지의 길이만큼 *를 만들어주고, 여기에 원래 뒷자리 4개를 붙여주었다 12def solution(phone_number): retur..
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/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/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/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 해설 : 모음으로만 이루어진 5글자 이하의 문자열이 주어질 때, 사전순으로 "A"부터 "UUUUU" 까지의 모든 단어들 중 몇 번째 순서에 위치하는지 찾는 문제이다. 풀이 : 사전순으로 몇 번째 위치에 있는지 알기 위해 "A" 부터 "UUUUU"까지 담겨있는 list를 만들었다. 정말 무식한 방법을 사용한 것 같다...
https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 해설 : 숫자들로 이루어진 배열이 주어질 때, 각 요소들을 두 개씩 뽑아서 더한 모든 결괏값을 오름차순으로 정렬해서 출력하는 문제이다. 풀이 : for 문을 이중으로 사용하여 요소를 두 개 뽑아서 더한 결괏값을 배열에 넣고 중복을 제거하기 위해 set으로 변환시키고 이를 오름차순으로 정렬하여 출력하면 된다. ite..