[프로그래머스] 12904 - 가장 긴 팰린드롬 (Java)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/12904문제 파악어려운 점타임아웃을 해결하기 위해 노력했다 😅문자열을 순회하며 주어진 문자열의 펠린드롭 여부를 모두 조사하게 되면... 🔥Timeout🔥펠린드롭인지 조사할 때 최적화를 덜 해서 그런지 모르겠지만,substring을 통해 문자열을 추출하고, 아래와 같이 구현하면 채점 시 시간이 초과된다. for (int from = 0; from boolean isPalindrome(String s) { int len = s.length(); if (len == 1) { return true; } for (int i = 0; i   위 구현 방법 대신 이차원 배열..
[프로그래머스] 161988 - 연속 펄스 부분
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/161988문제 파악어려운 점변수 type 신경쓰기 (int, long)DP 의미(?) 유지하기DP를 업데이트 해 나가면서 이것 저것 덧붙이려는 자신을 볼 수 있다.일관성을 유지하도록 하자풀이2차원 DP(int[][] DP)로 해결DP에서의 더해주고 빼는 행위를 0번째 열, 1번째 열에 저장하여 구현하면 편할 듯 했다.[구현 순서]초항 초기화(N-1번째 값)N-1번째 부터 0번째에서 순서대로 memorization을 진행 DP[i] 데이터를 업데이트하는 방법은 다음과 같다.주어진 수(sequence[i])에 -를 곱하는 경우(=펄스 부분 수열에서 -1)를 DP[i][0]에 업데이트주어진 수(seque..
[프로그래머스] 340212 - 퍼즐 게임 챌린지
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/340212 문제 파악문제 자체는 이해가 어렵지 않았다. 최초(=최소)로 퍼즐을 다 풀 수 있는 숙련도를 찾도록 하자.아래 조건을 잘 이해하면 구현은 어렵지 않았다.- diff ≤ level이면 퍼즐을 틀리지 않고 time_cur만큼의 시간을 사용하여 해결합니다.- diff > level이면, 퍼즐을 총 diff - level번 틀립니다. 퍼즐을 틀릴 때마다, time_cur만큼의 시간을 사용하며, 추가로 time_prev만큼의 시간을 사용해 이전 퍼즐을 다시 풀고 와야 합니다. 이전 퍼즐을 다시 풀 때는 이전 퍼즐의 난이도에 상관없이 틀리지 않습니다. diff - level번 틀린 이후에 다시 퍼즐을..
[프로그래머스] 12952 - N-Queen
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/12952 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 파악N * N의 체스판에서 N개의 퀸을 놓을 수 있는 경우의 수를 리턴 어려운 점시간 초과가 나지 않게 구현하도록 하자.재귀로 구현하게 될 것 같은데 시간 복잡도가 높아지지 않는 방법을 생각해 내기가 어려웠다. 풀이int 배열을 생성하여index -> columnindex애 해당하는 값 -> row로 지정하여 구현하면 일차원 배열로도 구현 가능하다.n개의 퀸을 필수적으로 놓아야 하므로,colu..
[프로그래머스] 77885 - 2개 이하로 다른 비트
·
Algorithm
알고리즘은 조금씩 풀고 있었는데, 문제를 풀고 복기할 겸 오랜만에 업로드해본다 😇푼 문제도 복습할 겸 업로드할 계획https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 파악비트 연산을 잘 활용하여 풀어야겠다비트가 1~2개 다르다는 점을 활용할 수 있을 것 같다.  어려운 점생각보다 케이스가 많다 [0, 100,000]자료형이 long 타입 - [0, 10^15]이기 때문에 비트 연산자라도 연산 횟수가 큰 편아래와 같은 코드 작성 시 타임아웃이 ..
Python Tips
·
Algorithm
계속 업데이트 중입니다 😊 정렬 array = [1,2,3,4,5] 1. array.sort() array.sort(reverse=True) array.sort(key=정렬기준(람다식도 가능), reverse=True/False) inputlist = [(1, 2), (-1, 3), (0, 4)] inputlist.sort(key=lambda x: x[0], reverse=True) # 결과 : [(1, 2), (0, 4), (-1, 3)] 도 가능 2. array = sorted(iteration 가능한 객체, key = 정렬 기준(람다식 가능), reverse=True/False) 필터 myfilter = filter(조건식, iteration 가능한 객체) list, tuple로 변환 가능 list..