전체 글 474

[삼성SW역량][Python/BOJ] 백준 14503 로봇 청소기(구현)

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제에 나와있는 순서대로 ( 북, 동, 남, 서 )로 dx,dy를 설정해준다. 1. 왼쪽으로 회전한다. ( 왼쪽에 청소공간이 있든 말든 어쨌든 회전하기 때문이다.) 2-1. 청소할 공간이 있다면 청소하고 그곳으로 위치로 간다. [turn 횟수를 초기화] 2-2. 청소할 공간이 없다면 turn의 횟수만 증가 시킨다. 3. 만약 turn 횟수가 4라면 (주변에 모두 청소가 되어있거나 벽일 경우 ) ..

[삼성SW역량][Python/BOJ] 백준 14502 연구소(DFS+BFS)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net wall()함수와 bfs() 함수가 있다. 1. wall 함수는 세운 벽의 개수를 인수로 받아 3이 되면 bfs함수를 실행시킨다. 아니라면 연구소를 돌면서 빈칸을 만나면 벽을 세우고 wall함수를 인수 1을 증가시켜 부른다. 2. bfs 함수는 바이러스를 퍼뜨린후 안전영역의 개수를 센다. ans 와 비교하여 가장 큰 안전영역의 개수를 저장한다. 코드 : Score와 virus를 합쳐서 bfs함수로 이름지었다...

[삼성SW역량][Python/BOJ] 백준 14501 퇴사(DFS)

https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 : def dfs(idx, val) : if idx == n+1 : global answer answer = max(answer,val) return else : if idx + T[idx] n : return if idx == n : global answer answer = max(answer,val) return dfs(idx+T[idx],val+P[idx]) dfs(idx+1,val) dfs(0,0) print(answer ) 0 안넣고 그냥 할 수 도 있습니다. 좀 더 간단한 코드 : def dfs(day,pay) : g..

[삼성SW역량][Python/BOJ] 백준 14500 테트로미노(DFS)

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 주어진 mp를 돌면서 4개로 연결된 폴리오미노의 합중 가장 큰 합을 구해 출력하면 된다. 시간 초과를 막는 방법 : 가장 큰 값을 구해서 (가장 큰값 * (3-idx) ) + val 이 현재 답보다 작거나 같다면 return 한다. 'ㅗ'의 경우는 dfs로 찾을 수 없으므로 if idx ==1 : 을 따로 코드를 만들어 주어야한다. 코드 : n,m = map(int,input().split()) ..

[Python/프로그래머스]추석 트래픽

https://programmers.co.kr/learn/courses/30/lessons/17676 start_time[j] - 1000: cnt += 1 answer = max(answer, cnt) return answer def get_time(time): hour = int(time[:2]) * 3600 minute = int(time[3:5]) * 60 second = int(time[6:8]) millisecond = int(time[9:]) return (hour + minute + second) * 1000 + millisecond def get_start_time(time, duration_time): n_time = duration_time[:-1] int_duration_time =..

[Python/프로그래머스]메뉴 리뉴얼

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 핵심!!! 1. 각 course별로 가장 많이 함께 주문된 메뉴 구성이 반환되는데 만약 여러개라면 모두 배열에 담는다. 그러니까 2개로 묶어진 요리들이 있다면 그 중에서 가장 많이 함께 주문된 메뉴구성으로 return 한다. 만약에 가장 많이 함께 주문된 메뉴 구성이 여러개면 모두 return!! 2. orders는 sort되지않았다. -> sort 해주어야..

[Python/프로그래머스] 숫자 문자열과 영단어 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/81301?language=python3 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 코드 : def solution(s): answer = "" en = ['zero','one','two','three','four','five','six','seven','eight','nine'] for idx, num in enumerate(en) : if num in s : s = s.replace(num,str(i..

[Python/프로그래머스]오픈채팅방

https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 코드 : def solution(record): answer = [] userDB = {} actions = [] for event in record : info = event.split() action,userid = info[0],info[1] if action in ("Enter", "Change") : nickname = info[2] userDB[use..

[Python/프로그래머스]문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 새롭게 알게된것 : 문자열에서 범위를 넘어서는 슬라이싱을 해도 에러가 안난다. 그저 있는 만큼 잘 잘릴 뿐 for문이 len(s)+i까지인 이유는 끝까지 압축이 가능할 경우 b에 추가가 안되고 cnt만 올라가기 때문에 +i를 해주어 현재 있는 cnt와 tmp를 b에 추가하기 위해서이다. 코드 : def solution(s): result=[] # 한글자 ..

[Python/프로그래머스]신규아이디추천_구현

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 이것이 바로 구현..! 문제에 나와있는 조건들 그대로 다 구현하면 된다. 풀다보면 재밌다. 코드 : def solution(new_id): answer = '' # 1 new_id = new_id.lower() # 2 for c in new_id : if c.isalpha() or c.isdigit() or c in ['-','_','.'] : answe..