TIL - 17 알고리즘 문제

이동근·2021년 1월 2일
0

알고리즘

목록 보기
1/19

1. 124 나라의 숫자

- n이 자연수 일때 1,2,4 만을 사용해서 표현을 하려고 한다.

코드

def change124(n):
	num_list = ['1','2','4']
    if n <= 3:
    	return num_list[n - 1]      -> n이 자연수 이기때문에 0부터 시작하는 리스트를 맞춰주기 위해서
    else:
    	q,r = divmod(n-1,3)
        return change(q) + num_list[r]

-> 재귀를 사용해서 문제를 풀었으며 자연수를 나누기를 했을 때 몫을 계속해서 나눠주고 나머지를 num_list에서 호출하는 방법으로 풀었습니다.

사용한 함수

  • divmod(x, y) - 두 숫자를 인수로 전달 받아 첫번째 인자를 두번째 인자로 나눈 몫과 나머지를 tuple 형식으로 반환한다.

2.★가장 큰 정사각형 찾기

- 1,0으로 채워진 표가 있다. 표 1칸은 1*1 정사각형이다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 리턴하는 함수 구현

def findLargestsquare(board):
	max_vol = 0
    for row in range(0, len(board)):
    	for col in range(0, lend(board[row])):
        	if board[row][col] == '0':
            	board[row][col] = 1
            else:
            	board[row][col] = 0
                
        for row in range(1, len(board)):
        	for col in range(1, len(board[row])):
            	if board[row][col] = 1:
                	continue
                
                board[row][col] = min([board[row][col - 1], board[row - 1][col - 1], board[row][col - 1]]) + 1
                if board[row][col] > max_vol:
                	max_vol = board[row][col]
                    
        answer = max_val * max_val
        return answer
                	
                    

-> 이 문제는 완벽하게 이해는 하지 못했다. 첫번째 for 구문은 board값이 0일때 구하는 구문이고 밑에 구문이 1일때 구현되는 for 구문인데 이해를 하지 못했다. 코딩 실력이 더욱 올라가고 파이썬 실력이 좀 더 나아지게 되면 이해 할 것이다.

board[row][col] = min([board[row][col - 1], board[row - 1][col - 1], board[row][col - 1]]) + 1 ....? 무슨 의미 일까....

3. 올바른 괄호

- 올바른 괄호를 찾아 (())같이 완벽하게 열고 닽음이 있으면 True를 리턴, )(()( 이런식이면 False 값을 추출한다.

def is_pair(s):
	count = 0
    for i in s:
    	if i == '(':
        	count += 1
        elif i ==')':
        	count -= 1
            if count < 0:
            	return False
       if count != 0:
           return False
       return True

-> 처음에는 문자열을 split 해서 리스트화 시켜서 만들려고 했지만 False값은 잘 나오지만 True 값이 나오지 않았다. 다른 고수 분들 코드를 보니 열고 닫음의 합을 0으로 완벽한 대칭이 되게 만들어 놓았다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글