Algorithm28 [구현(완전탐색) / 초급] 1316 (백준, Python, 실버5) 문제 링크 : https://www.acmicpc.net/problem/1316 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 .. Algorithm/🔎 Problem Solving 2022. 7. 7. [구현(완전탐색) / 초급] 4673 (백준, Python, 실버5) 문제 링크 : https://www.acmicpc.net/problem/4673 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 11.. Algorithm/🔎 Problem Solving 2022. 7. 6. [DFS&BFS / 중급] 2606 바이러스 : 오래 걸림 (백준, Python, 실버3) 문제 링크 : https://www.acmicpc.net/problem/2606 문제 설명 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되.. Algorithm/🔎 Problem Solving 2022. 7. 5. [DFS&BFS / 중급] 타겟넘버 : DFS, BFS 차이 느낄 수 있는 문제(프로그래머스, Python, Level2) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43165 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫.. Algorithm/🔎 Problem Solving 2022. 7. 3. [BFS / 최상급] 단어변환 (프로그래머스, Python, Level3) 링크 : 프로그래머스 단어변환 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거.. Algorithm/🔎 Problem Solving 2022. 7. 1. [DFS / 중급] 네트워크 (프로그래머스, Python, Level3) 링크 : https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같.. Algorithm/🔎 Problem Solving 2022. 6. 28. 파이썬 코테 : 백준 3085 (브루스포스) 문제사탕 게임 성공출처다국어분류시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율1 초 128 MB 16057 4939 3534 30.595%문제상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다.가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다.사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50)다음 N개 줄에는 보드에 .. Algorithm/🔎 Problem Solving 2021. 4. 4. 파이썬 코테 : 프로그래머스 주식가격 (스택) 주식가격문제초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이는 2 이상 100,000 이하입니다.입출력 예prices return[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]입출력 예 설명1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.5초 시점의 ₩3은 0초간 가격이 떨어지.. Algorithm/🔎 Problem Solving 2021. 4. 4. 파이썬 코테 : 프로그래머스 구명보트 (그리디) 문제 설명무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.제한사.. Algorithm/🔎 Problem Solving 2021. 3. 25. 프로그래머스 동적계획법 1번 문제 (Level 3) : N으로 표현 동적계획법 개념 1. 동적 계획 알고리즘 그리디 알고리즘과 같이 최적화 문제를 해결하는 알고리즘 작은 부분 문제들의 해들을 구함 + 해를 이용하여 보다 큰 크기의 부분 문제를 해결 + 최종적으로 원래 주어진 문제 해결 Memoization 기법 (프로그램 실행 시 이전에 계산한 값을 저장하여, 다시 계산하지 않도록 하여 전체 실행 속도를 바르게 하는 기술 2. 분할정복과의 비교 분할 정복 : 문제를 나눌 수 없을 때까지 나누어서 각각을 풀면서 다시 합병하여 문제의 답을 얻음 공통점 : 문제를 잘개 쪼갬 차이점 : 동적계획법은 부분문제가 중복되어 상위 문제 해결시 재활용 (memoization) ex)피보나치 수열 분할정복은 부분문제가 중복 안됨. memoization기법 사용 안함 ex)병합정렬, 퀵정렬.. Algorithm/🔎 Problem Solving 2020. 7. 7. [JAVA] java 출력 모음 백준 2557 / 백준 JAVA 제출 시 주의 사항 *백준 2557 : Hello World 출력* import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } } 무조건 import java.util.Scanner; 입력해 주어야 하고 public class Main이라고 따로 지정해 주어야 함 *백준 10718 : 강한친구 대한육군 두 줄 출력* import java.util.Scanner; public class Main{ public static void main(String[] args){ System.out.println("강한친구 대한육군"); System.out.println("강.. Algorithm/🔎 Problem Solving 2019. 12. 31. 컴퓨터 알고리즘 실습2) 대칭 암호화 고전방식 / 확장된 유클리드 (2) 2-12-2 Algorithm/📚 Concept 2019. 10. 9. 컴퓨터 알고리즘 실습2) 대칭 암호화 고전방식 / 확장된 유클리드 1. 문자열 "Hello, I love you. Please love Woongsup!!!"을 XOR을 사용한 암호화 방법으로 암호화 및 복호화 하는 프로그램을 구현하시오. 여기서 key 값은 0x5 (00000101)로 한다. 여기서 Woongsup은 여러분들의 영문 이름으로 대체하도록 한다.//고전방법으로 문자열 암호화 하기 in C#include #define MLENGTH 55unsigned int do_XOR(unsigned int c, unsigned int key) //c가 문자, key가 비밀키{return c^key;}char message[] = {"Welcome to Algorithm Practices, this is Woongsup Kim!"};unsigned int encrypti.. Algorithm/📚 Concept 2019. 10. 9. 이전 1 2 다음