본문 바로가기

운동하는 개발자/알고리즘, 코딩테스트

(20)
HackerRank [String] Weighted Uniform Strings /알고리즘 해커랭크 문제 주소 : https://www.hackerrank.com/challenges/weighted-uniform-string/problem 난이도 : easy 성공률 : 73.23% 문제 : a~z까지 각 문자에는 매칭 되는 가중치 값이 있다, 문자는 오름차순 정렬되어있다, 동일한 문자의 경우 본 문자의 가중치값, 문자 누적의 가중치 값을 모두 가진다 두번째 파라미터로 넘어온 값들이 해당 문자열의 가중치에 존재하면 각각 YES, NO로 리턴하라 풀이 : 마지막 처리한 문자 값을 들고 있으며 비교하여 이전과 같으면 가중치 누적합을 set에 추가 이전과 다르면 가중치 표에 맞는 값을 set에 추가 두 번째 파라미터로 넘어온 값들이 set에 있는지 확인하여 Yes or No 리턴 답안 import math i..
HackerRank [String] Bear and Steady Gene /알고리즘 해커랭크[미해결] 문제 주소 : www.hackerrank.com/challenges/bear-and-steady-gene/problem 난이도 : Medium 성공률 : 63.58% (210505) [미해결] 7개 예제 타임아웃 문제 : 4의 배수의 길이를 가진 문자열을 준다 그 문자는 A, C, T, G로만 구성되어있다 substring을 수정하여 A, C, T, G가 모두 같은 개수가 나오게 해야 한다 최소한으로 수정해야하는 substring 길이 값을 리턴하라 풀이 1) ACTG 문자 중 초과된 문자와 각각의 수, 합산한 수(변환해야 하는 최소 개수)를 체크 2) 변환해야 하는 최소개수길이만큼 substring을 한 칸씩 이동하며 분리시켜봄 3) 분리시킨 substring에 변환해야하는 문자들이 모두 포함하는지 체..
HackerRank [Strings] Sherlock and the Valid String /알고리즘 해커랭크 문제 주소 : https://www.hackerrank.com/challenges/sherlock-and-valid-string/problem 난이도 : Medium 성공률 : 64.75% 문제 : 셜록 규칙에 맞는 유효한 문자열 찾기 1. 모든 문자가 동일한 개수여야 유효하다 2. 오직의 하나의 문자를 제거할 수 있다 풀이 : 코드 주석 참고 답안 import math import os import random import re import sys import collections def isValid(s): dic :dict = collections.Counter(s) #딕셔너리를 통하여 각 문자와 개수 산출 (a는2개 b는3개) dic2 : dict = collections.Counter(dic.v..
HackerRank [Strings] Sherlock and Anagrams /알고리즘 해커랭크 문제 주소 : www.hackerrank.com/challenges/sherlock-and-anagrams/problem 이도 : Medium 성공률 : 87.92% 문제 : 주어진 문자열에서 에너그램인 하위 문자열이 몇 쌍인지 구하시오 풀이 : 글자수를 늘려주며 하위 문자열을 비교 답안 #!/bin/python3 import math import os import random import re import sys # # Complete the 'sherlockAndAnagrams' function below. # # The function is expected to return an INTEGER. # The function accepts STRING s as parameter. # def sherlo..
HackerRank [String] Caesar Cipher /알고리즘 해커랭크 문제주소 : https://www.hackerrank.com/challenges/caesar-cipher-1/problem 난이도 : Easy 성공률 : 86% 문제 : 문자열 s를 k만큼 쉬프트 시켜라, 특수문자 제외, z를 넘어가면 다시 a로 돌아온다 풀이 : 1. k 값이 100이하의 수 이므로 선처리로 26의 나머지값만 쉬프트 2. 대문자 아스키값+k 했을때 소문자 영역에 들어갈 수 있으므로 기존 문자가 대문자인지 소문자인지 확인하는 조건 추가 답안 #!/bin/python3 import math import os import random import re import sys # Complete the caesarCipher function below. def caesarCipher(s, k): ..
programmers [level2] 괄호변환 /알고리즘 프로그래머스 / 2020 카카오 블라인드 채용문제 문제주소 : programmers.co.kr/learn/courses/30/lessons/60058 난이도 : Level2 문제 - 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 풀이 : 주어진 시나리오대로 구성 잘라서 확인하고 붙이고 자르고 남은거 ..
programmers [level2] 스킬트리 /알고리즘 프로그래머스 문제 주소 : https://programmers.co.kr/learn/courses/30/lessons/49993 난이도 : Level2 문제 - 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열..
programmers [level2] 프린터 /알고리즘 프로그래머스 문제 주소 : programmers.co.kr/learn/courses/30/lessons/42587 난이도 : Level2 문제 - 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 풀이 - 큐를 구성해놓고 순서가 궁금한 값의 위치를 저장해놓는다 하나씩 빼서 우선순위 맥스 값과 비교하고 최댓값이면 출력 아니면 맨뒤로 추가 이동시킬 때마다 위치 값도 같이 한 칸씩 변환 출력시킬 값의 인덱스가 0번이면 종료 답안 def solution(priorities, location): nNow..