본문 바로가기

프로그래머스

(4)
[프로그래머스] 오픈채팅방 우선 record에 담긴 문자열을 띄어쓰기를 기준으로 나누어야 한다. 그래서 split하는 함수를 따로 구현해주었다. 각각 유저 아이디와 닉네임을 매칭시키기 위해 map을 사용하였다. record의 문자열들 중 하나를 command라 하면 split하면 command[0]에는 명령어가 들어가고 command[1]에는 유저 아이디가, command[2]에는 닉네임이 들어간다. 만약 문자열의 첫 단어가 'E' 또는 'C'로 시작할 경우 "Enter" 또는 "Change"이므로 map에서 해당 유저 아이디의 value 값을 초기화한다. 명령어가 Change일 경우에는 출력값이 없으므로 명령어가 Enter일 경우와 Leave일 경우만 설정해주면 된다. 위와 같이 문자열을 띄어쓰기를 기준으로 split 해준 후 ..
프로그래머스 level1 크레인 인형뽑기 게임 문제 설명 answer는 없어진 인형의 갯수고 stack은 바구니다. moves 배열의 크기만큼 for문을 반복하여 board에 인형이 없으면 continue로 스킵하고 있으면 해당 인형의 번호를 peek에 넣는다. 만약 바구니에 인형이 있다면 바구니의 가장 위에 있는 인형과 peek을 비교하여 같으면 pop을 하고 board의 값을 0으로 바꿔준다. 없으면 그대로 바구니에 넣고 board의 값을 0으로 바꿔준다. 전체 코드 def solution(board, moves): answer = 0 stack = [] for i in range(len(moves)): for j in range(len(board)): if(board[j][moves[i]-1] == 0): continue peek = board..
프로그래머스 level1 다트 게임 문제 설명 변수는 총 세 개로 설정했다. answer는 점수 합계, points는 점수를 저장해놓는 배열, num은 한 번 던질 때 얻은 점수다. for문을 사용하여 dartResult에서 값을 하나씩 빼와서 알파벳인지 확인한다. 알파벳이면 해당 알파벳이 S면 그대로 points에 append하고 D면 제곱을 하여 append하고 T면 세제곱을 하여 append 한다. 마지막으로는 num을 ''으로 초기화한다. dartResult에서 빼온 값이 숫자면 num에 덧붙여준다. 덧붙이는 이유는 한 자리 수만 있는게 아니라 10까지 있으므로 +=을 사용했다. dartResult에서 빼온 값이 알파벳도 아니고 숫자도 아닐 경우에는 해당 값이 *인지 #인지로 나누었다. *일 경우에는 또 두 가지 경우로 나누었는데 ..
프로그래머스 level1 키패드 누르기 문제 설명 입출력 예시 키패드를 좌표로 생각하여 문제를 접근했다. 키패드 1번은 [0,0] , 키패드 2번은 [0,1] ... 키패드 0번은 [3,1] 로 설정했다. 왼쪽 엄지손가락의 좌표인 left를 [3,0]으로 초기화하고 오른쪽 엄지손가락의 좌표인 right를 [3,2]로 초기화했다. 인자 numbers를 for문을 돌려서 i가 1,4,7일 경우 answer에 'L'을 추가하고 left 값을 바꾸고 i가 3,6,9일 경우 answer에 'R'을 추가하고 right 값을 바꿨다. i가 가운데 줄에 있는 번호 2,5,8,0일 경우 right의 좌표값과 left의 좌표값을 i의 좌표값과 비교하여 좌표값들의 차의 절댓값으로 거리를 계산했다. 전체 코드 def solution(numbers, hand): a..