본문 바로가기

Algorithm

(109)
[프로그래머스] 문자열 내 p와 y의 개수 (count , lower) https://school.programmers.co.kr/learn/courses/30/lessons/12916 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 다음과 같이 무지성 반복문으로 풀었으나.. 정확성이 60점으로 오답 판정이 나왔다. def solution(s): s_list = list(s) n = len(s_list) pn = 0 yn = 0 for i in range(n): if s_list[i] == 'p': pn += 1 elif s_list[i] == 'y'..
[Python] 코딩테스트 대비에 반드시 필요한 라이브러리 정리 내장함수파이썬에는 별도의 import 명령어 없이 바로 사용할 수 있는 내장 함수가 존재한다. 내장 함수는 print(), input()과 같은 기본 입출력 기능부터 sorted()와 같은 정렬 기능을 포함하고 있다. 우리가 코딩테스트를 준비하기 위해 반드시 알아야 할 함수 몇 개를 알아보자. ㅇㅅㅇ sum()sum() 함수는 iterable 객체가 입력으로 주어졌을 때, 모든 원소의 합을 반환한다. 다음의 예시를 확인해보자. # 입력result = sum([1, 2, 3, 4, 5])print(result)# 출력15 min()min() 함수는 파라미터가 2개 이상 들어왔을 때 가장 작은 값을 반환한다. 다음의 예시를 확인해보자. # 입력result = min([6, 3, 7, 2, 4])print(r..
[Python] 리스트 안의 특정 원소를 전부 삭제하는 법 (remove) 리스트 안의 특정 원소를 삭제할 때 우리는 보통 remove 함수를 사용한다. remove 함수의 사용법에 대해 알아보자. 기본 문법은 다음과 같다. 변수명.remove(특정 값)  하지만 이 방법으로는 특정 값을 갖는 원소를 제거하긴 하는데, 값을 가진 원소가 여러 개면 하나만 제거한다. 다음의 예시와 같이 말이다. # 입력a = [1, 2, 3, 4, 5, 5, 5]a.remove(5)print(a)# 출력[1, 2, 3, 4, 5, 5] 5는 세 개나 있지만, 한 개만 지워진 모습을 볼 수 있다. 그렇다면, 5를 전부 지우기 위해서는 어떻게 해야 할까? 다음의 코드를 보자. # 입력a = [1, 2, 3, 4, 5, 5, 5]remove_set = {5}result = [i for i in a if..
[Python] set 함수 (중복제거) #list에 중복된 값이 있으면 true, 없으면 false 반환 def has_duplicates(1st): return len(1st) != len(set(1st)) x = [1,2,3,4] y = [3,3,3,3] has_duplicates(x) # false has_duplicates(y) # true 코딩테스트 문제에서 중복된 요소가 있는지 확인할 때 요긴하게 사용할 수 있다.
[Python] 순열과 조합 (permutations & combinations) 순열이란 서로 다른 n개의 원소에서 r개를 중복없이 순서를 고려하여 선택 혹은 나열하는 것을 의미한다.파이썬에서는 itertools를 이용하면 순열 내장함수인 permutations를 사용할 수 있다. 하나의 리스트에서 r개의 원소를 선택하여 나열하는 방법과, 모든 원소를 순서를 고려하여 나열하는 방법 2가지가 있다. 하나의 리스트에서 r개의 원소를 선택하여 나열하는 방법len() 함수를 사용하면 개수까지 구할 수 있다. 다음의 코드는 N개의 원소 중 2개의 원소를 선택하는 경우다. 확인해보자.import itertoolsA = list(map(int, input().split()))nPr = list(itertools.permutations(A, 2))print(nPr)print(len(nPr)) 1 ..
[Python] 대소문자 변환 함수 4가지 1. upper() 함수 upper() 함수는 영문자의 모든 문자들을 대문자로 바꾸는 함수이다. data = "Hello World" print(data) print(data.upper()) Hello World HELLO WORLD 2. lower() 함수 lower() 함수는 영문자의 모든 문자들을 소문자로 바꾸는 함수이다. data = "Hello World" print(data) print(data.lower()) Hello World hello world 3. capitalize() 함수 capitalize() 함수는 영문자의 문자열 첫 글자는 대문자로 변환하고, 나머지 문자열의 글자는 모두 소문자로 변환하는 함수이다. data = "HEllo worlD" print(data) print(dat..
[Python] join 함수 join 함수의 모양은 다음과 같다. ".join(리스트) '구분자'.join(리스트) 1. ".join(리스트) ['a', 'b', 'c'] 이런 리스트가 있다고 하자. 이를 "abc"의 문자열로 합쳐서 반환해주고 싶다면 ".join(리스트)를 이용하면 된다. 2.'구분자'.join(리스트) 마찬가지로 ['a', 'b', 'c'] 이런 리스트가 있다고 하자. 이 때, "a_b_c"와 같은 형태로 문자열을 반환하고 싶다면 '_'.join(['a', 'b', 'c']) 이렇게 써주면 된다.
[Algorithm] Shortest Path (다익스트라, 플로이드 워셜 알고리즘) 다익스트라 알고리즘 다익스트라 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 떄, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. 다익스트라 최단 경로 알고리즘은 '음의 간선'이 없을 때 정상적으로 동작한다. 알고리즘의 원리는 다음과 같다. 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 위 과정에서 3.과 4.번을 반복한다. 다익스트라 알고리즘을 구현하는 방법은 2가지이다. 구현하기 쉽지만 느리게 동작하는 코드 구현하기에 조금 더 까다롭지만 빠르게 동작하는 코드 코딩테스트를 준비하는 사람이라면 방법 2..