비트를 쪼개는 개발자

allen321@naver.com

분류 전체보기 82

C# [HackerRank] Algorithm(String) - Strong Password

문제 설명 Louise라는 친구가 SNS 사이트에 가입하면서 설정하는 비밀번호에 관한 문제다. 다만 비밀번호를 설정할때 몇 가지의 제한사항이 있는데, 이 제한사항을 만족하는 비밀번호를 만들어야 한다. 각 조건은 다음과 같다.  비밀번호의 길이가 최소 6자 이상이어야 함.최소 하나의 숫자가 포함되어 있어야 함최소 하나의 소문자 영어 문자가 포함되어 있어야 함최소 하나의 대문자 영어 문자가 포함되어 있어야 함최소 하나의 특수문자가 포함되어 있어야 함 (특수문자는 "!@#$%^&*()-+")  해당 조건을 충족하지 않는다면 조건을 충족해야 하는 최소한의 문자의 갯수를 return 해야 한다.  Sample 예시를 살펴보면 문자의 길이는 3이며, String은 "Ab1"로 구성된다. 일단 문자에 포함되야 하는 ..

코딩테스트 2024.09.06

C# [프로그래머스] Lv.3 입국심사

문제 설명 입국 심사를 기다리는 사람들이 입국 심사에 걸리는 최소한의 시간을 계산해야 하는 문제다. 입국 심사를 기다리는 사람은 최대 10억명이고, 심사관의 숫자는 10만명 이하, 그리고 심사관 한명이 입국 심사에 걸리는 시간은 최대 10억분까지도 걸릴 수 있는 제한사항이 주어진다. 얼핏 봐도 최적화가 중요한 문제이고 역시나 완전 탐색으로 먼저 풀어보니 1분마다 시간을 계산해서는 시간복잡도에서 높은 확률로 통과하지 못하는 문제였다.  최적화를 어떻게 시킬까 고민하다가 이분 탐색(이진 탐색) 기법을 사용해서 중간 시간 값을 체크해서 경우의 수를 줄여나가는 방법으로 접근했고 다음과 같은 방식으로 풀어보았다.   해당 코드public static long solution(int n, int[] times){ ..

코딩테스트 2024.09.05

C# [프로그래머스] Lv.2 JadenCase 문자열 만들기

문제 설명  간단한 문자열 문제다. string s 로 입력받은 문자열을 검사해서 각 단어의 첫번째 글자를 대문자로 바꿔주기만 하면 되는 문제다. 해결 포인트는 s로 날아온 문자열을 띄어쓰기를 기점으로 잘 나눠주고, 나눠준 단어별로 첫번째 글자를 대문자로 바꿔주는 조건문만 만들면 손쉽게 해결 가능하다. 첫번째 글자를 대문자로 바꿔준 다음에는 나머지 글자는 소문자로 변경해 주면 끝이다.   해당 코드  public string solution(string s){ // 공백으로 구분된 단어들을 배열로 변환 string[] sWords = s.Split(' '); for (int i = 0; i 0) { // 각 단어의 첫 ..

코딩테스트 2024.09.05

C# [프로그래머스] Lv.2 의상

문제 설명 1. yellow_hat2. blue_sunglasses3. green_turban4. yellow_hat + blue_sunglasses5. green_turban + blue_sunglasses 각 입을 수 있는 의상들을 종류별로 입는 경우의 수를 모두 계산하고 최종적으로 몇개의 조합으로 옷을 입을 수 있는지 계산하는 문제이다. 우선 각 의상의 종류별로 몇개의 종류가 있는지 넣어줄 딕셔너리를 선언하고 string 배열에서 받아온 옷의 갯수 만큼 계산하는 for문을 돌려준다. 이후에는 각 Dictionary 의 key값 만큼 곱해주면 간단하게 경우의 수가 나온다.최소한 하나의 옷은 입는다는 전제조건이 있었기 때문에 최종적으로 나온 answer에 -1을 해주면 해결 된다.   해당 코드  us..

코딩테스트 2024.08.27

C# - 이벤트(Event) / 델리게이트와 이벤트의 차이점

이벤트(Event)란?  이벤트는 객체 또는 클래스에서 특정 상황이 발생하거나 상황을 발생시켰을때 알림을 받기 위해 사용되는 메커니즘이다. 특정한 조건이 충족되면 이벤트가 호출되며 버튼 클릭, 마우스 이동이나 키보드 입력 등 다양한 작업을 수행하다가 발생하는 이벤트를 처리하기 위해 사용된다. 이벤트는 기본적으로 델리게이트를 기반으로 작동하며 이벤트를 정의할 때에는 해당 이벤트를 처리할 델리게이트 형식을 정의해야 한다. 이벤트는 상호 참조를 막기 위해 대입 연산자를 사용할 수 없고, 증감 연산자만 사용할 수 있다.(+=, -=) 이벤트는 객체 간 느슨한 결합을 유지하면서 상호 작용을 유지하며 하나의 이벤트에 여러 응답을 지정해 확장성이 뛰어나다. 이벤트의 사용법은?  우선 이벤트를 사용하려면 두 역할을 수..

C# 2024.08.21

C# - 델리게이트(Delagate)

델리게이트(Delegate) 란 ?   델리게이트라는 단어는 대리자, 대표자라는 뜻을 가진 단어다.  C#에서는 함수를 참조할때 사용하는데 함수를 참조 한다는 것은 함수의 주소 값을 저장하고 이 주소 값을 이용해서 해당 함수를 호출한다는 의미이다. 즉 C++에서 함수 포인터를 사용해 함수를 호출하는것과 유사한 개념이다.  델리게이트를 사용하면 메서드를 변수처럼 저장하고, 이를 통해 메서드를 실행하거나 다른 메서드에 전달할 수 있으며 심화 과정으로는 이벤트 처리, 콜백 메서드, 멀티캐스팅(여러 메서드를 호출하는 기능)등도 수행할 수 있다.   델리게이트를 정의하는 법  델리게이트는 위에서 말한것 처럼 함수를 참조하는 형태로 정의해야 한다. 즉 함수에서 사용하는 형식과 매개변수를 똑같이 참조해 주어야 한다는..

C# 2024.08.15

통신 - DNS

DNS(Domain Name System) 란? DNS는 인터넷에서 사용하는 전화번호부와 비슷한 개념이다.사용자가 입력하는 웹 주소(www.naver.com)를 도메인은 숫자 IP 주소로 변환하여 원하는 주소로 연결시켜 준다.DNS는 여러 과정을 거쳐 단계별로 웹 주소를 IP 주소로 반환한다.DNS 상위 기관은 인증된 기관에게 도메인 주소를 생성, 변경하거나 IP 주소로 변경이 가능한 권한을 부여해준다.위와 같은 계층형 구조를 가지며 분산 데이터베이스 구조를 가지는것이 DNS의 특징이다.    DNS의 구성 요소  1. 도메인 네임 스페이스 도메인 네임 스페이스(Domain Name Space)는 인터넷에서 수많은 도메인 이름이라는 데이터를 체계적으로 구성한 계층 구조이다.도메인 이름이라는 데이터를 찾기..

통신 2024.08.13

C# [프로그래머스] Lv.2 두 큐 합 같게 만들기

문제 설명   queue1 = [3, 2, 7, 2]queue2 = [4, 6, 5, 1] 문제에서 넘겨주는 queue는 배열로 이루어져 있지만 제일 앞에 있는 배열 원소가 첫번째로 빠져나와야 하는 queue의 원소로 가정해서 풀어야 한다. 위와 같이 두개의 큐를 넘겨주고 모든 큐의 합을 더한 뒤 2로 나눈 값이 각각의 큐의 합이 되도록 만들어야 한다. 즉 위의 queue1 의 총 합은 14이고 queue2의 총 합은 16이다. 둘을 합하면 30이고 각 큐의 원소의 합이 15가 되게 만들어야 하기 때문에 queue1의 원소와 queue2 원소를 Enqueue하고 Dequeue 해가며 작업한다. 이때 return값은 제일 적은 경우로 작업한 횟수를 넘겨주면 되고 불가능 할 경우 -1을 return하면 된다..

코딩테스트 2024.08.09