본문 바로가기

TIL/Algorithm

(16)
[백준] 코딩연습 2588. 곱셈 import math a = input() b = input() sum = 0 for index, i in enumerate(b[::-1]): sum += math.pow(10, index) * (int(a) * int(i)) print(int(a) * int(i)) print(int(sum)) 3046. R2 a, b = input().split() print(2*int(b) - int(a)) 2163. 초콜릿 자르기 a, b = input().split() print((int(a)*int(b))-1) 11021. A+B -7 n = input() answer = [] for i in range(int(n)): a, b = input().split() answer.append(int(a..
[HackerRank] Subarray Division 뒤에서 부터 합산하는방식으로 구현하려고했는데, 특정부분이 자꾸 걸려서 앞에서부터 합산하는 방식으로 바꾸었다 #!/bin/python3 import math import os import random import re import sys # Complete the birthday function below. def birthday(s, d, m): result = 0 for i in range(0, n-m+1): if sum(s[i:i+m]) == d: result += 1 return result if __name__ == '__main__': fptr = open(os.environ['OUTPUT_PATH'], 'w') n = int(input().strip()) s = list(map(int, inp..
[프로그래머스] 큰 수 만들기 (LV2) 고려해야할 케이스는 만약 for문을 다돌고나서도 k값이 0이 아닐때, 뒤에서 k만큼 잘라줘야한다. def solution(number, k): answer = '' stack = [] for i in number: while stack and k > 0 and int(i) > stack[-1]: stack.pop() k -= 1 stack.append(int(i)) if k != 0: stack = stack[:-k] for i in stack: answer += str(i) return answer
[프로그래머스] 키패드 누르기(easy, kakao) 말그대로 구현을 하면된다. 다만 여기서 거리의 대한 개념이 나오는데 다음문장을 유심히 읽어야한다 "엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다." 즉, 여기서 거리를 계산할때 단순히 좌표와 좌표사이의 거리(대각선)이 아니고, 좌표간의 이동거리를 계산해야한다. 그래서 난 distance라는 함수를 선언하고 좌표 거리를 계산을 return하였다. from math import sqrt def distance(arr1, arr2): return abs(arr1[0]-arr2[0]) + abs(arr1[1]-arr2[1]) def solution(numbers, hand): answer = '' now_l = [0,0] now_r = [0,2] posit..
[프로그래머스] 크레인 인형뽑기 (easy, kakao) stack을 사용하면 쉽게 풀수있는 문제 그리고 return해야할것은 사라진 인형의 개수이지, 몇번 사라지게했는지 횟수가 아님 def solution(board, moves): answer = 0 stack = [] for i in moves: for index, j in enumerate(board): if j[i-1] != 0: if len(stack) > 0: if stack[-1] == j[i-1]: answer += 2 stack.pop() else: stack.append(j[i-1]) else: stack.append(j[i-1]) board[index][i-1] = 0 break return answer
[프로그래머스] 실패율(easy, kakao) 마지막 result부분에 session이 0일때 케이스를 고려해줘야한다. 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다. (이 조건문을 고려해줘야함) def solution(N, stages): answer = [] temp = [] for i in range(1,N+1): cnt = 0 session = 0 result = 0 for j in stages: if j >= i: session += 1 if i-1
[프로그래머스] 시저암호(easy) def solution(s, n): answer = '' for i in s: if ord(i) == 32: answer += i else: if ord(i) + n > 122 and 122>=ord(i) >= 97: answer += chr((ord(i)+n)%122 + 96) elif ord(i) + n > 90 and 90>=ord(i) >= 65: answer += chr((ord(i)+n)%90 + 64) else: answer += chr((ord(i)+n)) return answer
[프로그래머스] 정수 제곱근 판별(easy) from math import sqrt def solution(n): answer = 0 if sqrt(n)%1 == 0: return int((sqrt(n)+1)**2) else: return -1 return answer ### 다른 문제 풀이 def solution(n): sqrt = n ** (1/2) if sqrt % 1 == 0: return (sqrt + 1) ** 2 return -1