코테 43

[삼성SW역량][Python/BOJ] 백준 3190 뱀(시뮬레이션)

시뮬레이션 문제로 문제에서 요구하는 사항을 완성시키면 된다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 1. mp를 입력받는다. 2. 사과의 위치를 1으로 표시한다. 3. 방향을 바꿀 시간을 입력받는다. 4. start() 4-1. 덱에 위치를 넣는다. 4-2. 벽 또는 본인 몸에 부딪히지않았다면 방문을 표시한다. 4-3. 만약 사과가 있다면 꼬리를 제거하지않고 없다면 제거한다. 4-4. 만약 현재 시간이 3에서 입력받은 방향을 바꿀 시간..

[삼성SW역량][Python/BOJ] 백준 14891 톱니바퀴(시뮬레이션)

https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 이 문제는 문제와 문제에 나와있는 예시를 잘 읽어야한다. 원래 머리에 생각하고 있는 대로 풀면 틀린다. 처음 풀 때 예시가 잘 이해 안되서 예시가 틀린건가..하고 안봤다가 잘못 이해하고 풀었다. 1. 옆 톱니를 움직인다. (움직인 톱니의 옆친구와 극이 다르면 옆친구도 움직인다.) 2. 해당 톱니를 움직인다. 옆톱니를 움직일 때도 이제는 자신이 해당 톱니가 되어서 옆 톱니를 먼저 확인한다-!! ..

[삼성SW역량][Python/BOJ] 백준 14889 스타트와 링크(DFS, 백트레킹)

https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net # depth은 뽑은 사람의 인원수, idx는 뽑은 사람 다음부터 뽑기위해서 저장 💻 코드 : def dfs(depth, idx) : # depth는 사람의 수 global min_diff if depth == n//2 : power1, power2 = 0,0 for i in range(n) : for j in range(n) : if vis[i] and vis[j] : # i와 j가 동시에 우리팀! power1+= ..

[삼성SW역량][Python/BOJ] 백준 14888 연산자 끼워넣기(DFS)

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net dfs(idx,val) : val 이 기존 값 , idx는 이제 더할 값의 인덱스 다음 dfs는 val에 idx인덱스의 값을 (더하거나 ,빼거나 곱하거나 나눠주고) idx를 1 증가시킨다.) 그래서 처음에 dfs(1, numbers[0]) 를 호출해주는 것이다. numbers[0]을 가장 초기값으로 idx가 1인 값을 선택된 기호로 계산하여 ..

[삼성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/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..