본문 바로가기

알고리즘 문제

프로그래머스 문자열 내림차순으로 배치하기 대문자 리스트, 소문자 리스트를 만든다for문을 돌면서 주어진 문자열이 대문자인지 소문자인지 구문하여 리스트에 넣는다.내림차순 정렬을 한다.def solution(s): U=[] L=[] for x in s: if ord(x)>=65 and ord(x)
프로그래머스 완주하지 못한 선수 스타트업 면접에서 코딩 테스트를 본다고 한다.몇 달 동안 문제 풀이를 안했더니 원래 잘 못했지만... 실력이 태초 마을로 가버렸다. def solution(participant, completion): participant.sort() completion.sort() for i in range(len(completion)): if participant[i] != completion[i]: return participant[i] return participant[i+1] 출처 https://programmers.co.kr/learn/courses/30/lessons/42576
14888번 연산자 끼워넣기 백준 BOJ #include#includeusing namespace std;int N, arr[11],i,pl,minu,mul,divi,mn=1000000001,mx=-1000000001,cnt,result;void calc(int cnt, int result, int pl, int minu, int mul, int divi) {if (cnt == N) { //연산을 다 했다면, 10억,-10억과 비교해서 최대 최소값 구함mx=max(mx, result);mn=min(mn, result);return;}//cnt로 횟수를 세며 계산 결과에 각 연산자로 피연산자를 연산. 사용한 연산자 개수 하나 줄이기//각 cnt에서 모든 경우를 따짐if (pl) calc(cnt + 1, result + arr[cnt], pl - ..
백준 2589번 보물섬 https://www.acmicpc.net/problem/2589 #include#include#include using namespace std;queue qx;queue qy;int height, width, i, j, map[51][51], len[51][51], mx, fx[4] = {0,1,0,-1}, fy[4] = { -1,0,1,0 },tmpX,tmpY,x,y;bool visited[51][51];char alpha; void bfs(int i, int j){visited[i][j] = true;qx.push(i); qy.push(j);while (!qx.empty() && !qy.empty()) {tmpX = qx.front(); qx.pop();tmpY = qy.front(); qy.po..
Programmers Level 8 올바른 괄호 (카탈린 수 사용) import math as m def parenthesisCase(n): return m.factorial(2*n) // (m.factorial(n+1) * m.factorial(n)) #카탈란수 # 실행을 위한 테스트코드입니다. if parenthesisCase(3) == 5: print("parenthesisCase(3)이 정상 동작합니다. 제출을 눌러서 다른 경우에도 정답인지 확인해 보세요.") else: print("parenthesisCase(3)이 정상 동작하지 않습니다.")
Programmers Level 8 선입선출 스케줄링 def getCoreNumber(n, cores): time = 0 while n>0: for i in range(0,len(cores)): if time%cores[i]==0: #현재 시간 나누기 처리 시간의 나머지 n-=1 if n==0: return i+1 time+=1 print(getCoreNumber(6, [1, 2, 3])) print(getCoreNumber(22,[1,2,3,4,5]))
Programmers Level 6 3xN 타일링 def tiling(n): if n%2==1:return False else: dp=[[0]*3 for i in range(10000)] dp[2][0]=dp[2][1]=dp[2][2]=1 for i in range(4,n+1,2): dp[i][0] = 2 * dp[i-2][0] + dp[i-2][1] + dp[i-2][2] dp[i][1] = dp[i-2][0] + 2 * dp[i-2][1] + dp[i-2][2] dp[i][2] = dp[i-2][0] + dp[i-2][1] + dp[i-2][2] return (dp[i][0] + dp[i][1] + dp[i][2])%100000 # 아래는 테스트로 출력해 보기 위한 코드입니다. print(tiling(119))
Programmers Level 5 줄 서는 방법 import math as m def setAlign(n,k): answer = [] #답 리스트 num = [i for i in range(1, n + 1)] #[1...n] 리스트 생성 while num: #리스트가 빌 때까지 n-=1 #자리수 하나씩 감소 fac = m.factorial(n) answer.append(num.pop((k-1)//fac)) #답 리스트에 [1...n] 리스트에 있는 숫자를 팝해서 붙임. (k-1)//(n!//n). k번째 수의 맨 앞 자리 수는 (k-1)//(n-1)! + 1. (k-1)//(n-1)!을 인덱스 삼아 num에서 값을 찾으면 +1 한 결과가 남. 왜냐하면 num[i]=i+1 이므로. k%=fac #다음에 구할 순서는 기존의 순서 k번째를 1만큼 감소한 n..