본문 바로가기

알고리즘/프로그래머스

(29)
[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 올바른 괄호 (python) 풀이1def solution(s): right_cnt = 0 for i in s: if i == '(': right_cnt += 1 elif i == ')': right_cnt -= 1 if right_cnt s 배열을 앞에서부터 순회한다. 올바르지 않은 경우는 다음 두 가지다.1. 앞에서부터 순회했을 때, '(' 개수보다 ')'개수가 커지는 경우2. s 배열을 전체 다 돌았는데 '(' 개수가 더 많은 경우 위 두 가지 경우를 고려하여 코드를 작성했다.'(' 괄호 개수를 right_cnt 변수에 담는다. ')'괄호가 나오면 right_cnt의 값을 1씩 줄인다.'(' 개수보다 ')' 개수가 더 커지면 False..
[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 같은 숫자는 싫어 (python) 풀이def solution(arr): answer = [] for i in arr: if answer and i == answer[-1]: continue answer.append(i) return answerstack을 활용한 문제.arr 전체를 돌면서 answer 안에 데이터가 존재할 때 가장 위에 있는 데이터와 지금 넣으려는 데이터가 같으면 continue, 아니라면 answer에 넣는다. python에서 stack 사용방법# 선언stack = []# pushstack.append(5)stack.append(2)# popstack.pop() #2stack.pop() #5# pushstack.append(5)stack.appe..
[프로그래머스] 소수 찾기 (python) import math def solution(n): answer = 0 for i in range (2, n+1): check_prime = True for j in range(2, int(math.sqrt(i))+1): if(i % j == 0): check_prime = False break if(check_prime): answer += 1 return answer for j in range(2, i+1) 시간초과로 실패 -> 제곱근까지 돌리니까 문제 해결됨(시간복잡도 감소) 의문: 어차피 제곱근 넘어서 가기 전에 break로 끊기는데도 시간초과가 뜨는 이유가 뭘까? -> 엄청 큰 소수를 돌릴 때 제곱근까지만 돌려도 되는데 구지 n까지 돌릴 이유가 없기 때문 import math def soluti..
[프로그래머스] 짝수와 홀수 (JAVA) 문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 3 "Odd" 4 "Even" #include #include #include char* solution(int num) { // 리턴할 값은 메모리를 동적 할당해주세요 char* answer = (char*)malloc(sizeof(char)); if(num%2==0) answer="Even"; else answer="Odd"; return answer; } char* answer = (char*)malloc(sizeof(char));
[프로그래머스] 행렬의 덧셈 (JAVA) 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 arr1arr2return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr1[0].length]; for(int i=0;i

반응형