전체 글 145

프로그래머스 - 전력망을 둘로 나누기(C++)

문제https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이포인트는 자를 전력망을 방문처리 해두는 것!그것 외에는 일반 bfs와 같다bfs 문제를 오랜만에 풀어서 실수했던 것은 cnt를 증가시킬 때큐에서 팝 할 때 증가 시켜야 하는데, 방문하지 않는 노드 발견했을 때 증가시켜서 틀렸었다. 코드#include #include #include using namespace std;vector graph[101];bool visited[101];int cnt..

백준 1327 - 소트 게임 (C++)

문제 https://www.acmicpc.net/problem/1327 1327번: 소트 게임 홍준이는 소트 게임을 하려고 한다. 소트 게임은 1부터 N까지 정수로 이루어진 N자리의 순열을 이용한다. 이 게임에선 K가 주어진다. 어떤 수를 뒤집으면, 그 수부터 오른쪽으로 K개의 수를 뒤집 www.acmicpc.net 풀이 일단 BFS로 풀어야 한다는 건 알겠는데 도대체 방문배열을 어떻게 처리해야할지 감이 안 잡혔다. 큐에 배열이 포함되어야 할텐데 배열을 어떻게 들고 다녀야할지도 모르겠어서 답을 좀 참고했다. 배열은 문자열로 바꾸면 되고, 방문배열은 값 존재 여부 확인을 편하게 하기 위해 set으로 만들었다. 그외에는 일반 BFS와 유사하게 가능한 경우를 다 돌면서 큐에 저장하면 된다. 코드 #includ..

백준 1283 - 단축키 지정 (C++)

문제 https://www.acmicpc.net/problem/1283 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 풀이 일단 1) 단어 첫 글자가 단축키로 지정되었는지 확인 2) 모든 첫 글자가 단축키로 지정되어 있다면 한 글자 한 글자 확인 3) 그래도 다 지정되어 있다면 그냥 출력 이 과정을 코드로 구현했다. 단축키로 지정되어 있는지 확인하기 위해 set을 사용했다.(검색이 쉬워서) c++로 문자열 문제 풀 때마다 공백 있는 문자열 입력받는 법, 공백 기준으로 나누는 법을 검색해서 풀고..

[오늘의 생각 6] 00페이

기사 내용 지난해 스마트폰 등 모바일 기기를 사용한 결제액이 실물 카드 결제액을 처음으로 앞질렀다. 한국은행이 25일 발표한 ‘국내 지급결제 동향’을 보면, 2023년 개인·법인의 신용·체크카드의 하루 평균 이용액은 2조9170억원으로 작년 같은 기간보다 6.2% 증가했다. 결제 형태로 나눠보면, 모바일 기기(피시 포함)를 통한 하루 평균 결제액이 1조4740억원으로 10.8% 증가했다. 반면, 실물 카드 결제액(1조4430억원)은 1.9% 늘어나는데 그쳤다. 이에 지난해 전체 지급카드 결제액 중 모바일 기기 사용 비중이 50.5%로 처음으로 실물 카드 결제액보다 커졌다. 온라인 쇼핑 결제뿐 아니라 대면 결제에서도 실물 카드가 아닌 모바일 결제가 크게 증가한 영향이다. 이 기사를 접한 나의 생각 1. 귀..

시사 & 상식 2024.03.26

[오늘의 생각 2] 에브리싱 랠리

에브리싱 랠리란? 위험자산(주식, 암호화폐)은 물론 안전자산(금)까지 가격이 모두 오르는 현상 에브리싱 랠리를 촉발한 계기는 미국 중앙은행(Fed)의 기준금리 인하 시사. 이자란? 교환할 수 있는 물품 빌리는 데 따른 대가 금리란? 이 가운데서 금융자금을 빌려 쓴 대가 ※ 금리는 어떻게 결정될까? 고전학파 경제학자 : 투자(수요)와 저축(공급)이 균형을 이루는 수준에서 이자율이 결정된다. 케인스학파 : 재산을 현금이 아닌 채권과 같은 금융자산으로 보유할 경우, 그에 대한 보상으로 주어지는 것이 이자. (채권 : 일정 기간 약속한 금리에 돈을 빌리고 만기에 원금과 이자를 돌려주는 금융상품) ※ 금리가 경제에 미치는 영향 자금 배분 기능 : 돈이 급하게 필요하면 금리를 더 줘야 함. 금융을 촉진하는 엔진 경..

시사 & 상식 2024.03.22

백준 14226 - 이모티콘 (C++)

문제 : https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 풀이 일단 최소시간이니까 bfs로 풀어야겠다고 생각했고, 계속 가지고 다닐 값이 총 3개(화면에 있는 이모티콘 개수, 클립보드에 있는 이모티콘 개수, 시간)라서 tuple을 사용했다. 처음엔 방문배열을 1차원으로 만들어서 답이 잘 안 나왔다. 방문배열을 현재 화면과 클립보드 2개를 체크하도록 2차원으로 수정했는데 그래도 틀림.. 문제는 이모티콘 최대 길이를 잘못 생각한 것이었다. S가 최대..

[오늘의 생각 1] 빅테크 규제 강화

요약 빅테크 규제를 강화한 디지털시장법(DMA)가 시행되었다. DMA 란? 빅테크의 시장지배력 남용을 막는 동시에 개인정보를 보호하는 것을 목표로 내세운 법. IT 시장에서 점유율 높은 기업을 게이트키퍼로 정해 특별 관리 게이트키퍼로 지정되면.. 🚫 자신들 서비스 경쟁사보다 잘 보이게 노출 금지 🚫 개인정보 맞춤형 광고에 활용 금지 예시 애플 : 아이폰에서 다른 앱스토어 설치 허용 구글 : 구글 검색시 본인들 서비스 먼저 노출 불가 왓츠앱 : 다른 메신저 이용자와도 채팅 가능 내 생각 아무래도 게이트웨이로 지정된 거대 테크 기업들이 시장을 독점하고 있으면, 다른 기업이 치고 올라올 수 없고, 기업 간의 경쟁도 적어질 것이다. 특정 기업이 시장을 독점하지 않고 기업들 간의 경쟁이 있어야 소비자들도 더 나은..

시사 & 상식 2024.03.21

백준 23300 - 웹 브라우저 2 (C++)

문제 https://www.acmicpc.net/problem/23300 23300번: 웹 브라우저 2 첫째 줄에 접속할 수 있는 웹페이지의 종류의 수 N, 사용자가 수행하는 작업의 개수 Q 가 각각 주어진다.(1 ≤ N, Q ≤ 2,000) 둘째 줄부터는 Q개의 작업이 주어지며, 각 작업이 의미하는 바는 다음 www.acmicpc.net 풀이 덱을 이용해서 풀이하는 구현 문제이다. 문제 설명대로 차근차근 코드를 작성하면 해결할 수 있다. 뒤로 가기, 앞으로 가기 공간을 구현할 때 스택 대신 덱을 사용했는데, 압축 실행시 인덱스로 접근하고 싶었기 때문이다. 그리고 압축 실행시, 뒤로 가기 공간이 비어있으면 out of bounds 오류가 발생하므로, 먼저 비어있는지부터 확인해야 한다. 코드 #includ..

백준 2470 - 두 용액 (C++)

문제 https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 풀이 이분탐색과 투포인터 문제이다. 벡터의 첫 원소를 시작으로 기준 원소를 정한다. 그 후, 그 외의 원소들을 이분탐색한다. 각 원소들과 기준 원소의 차이를 비교하며 가장 차이가 적은 원소 2개를 찾는다. 주의할 점! 용액 하나가 10억의 값을 가질 수 있으므로 넘을 수 있으므로 최소값에 넣어 둔 값을 20억 정도로 해줘야 함. 코드 #include #inc..

누적 합

2차원 배열의 누적합을 구하는 방법을 알아보자. 핵심 포인트는 공통된 부분을 제거한다는 것! 원본 배열에 따른 누적합 배열은 위와 같다. (1,1)을 기준으로 특정 좌표까지의 합을 저장한 것이 누적합 배열이다. (2,2)의 누적합을 구하는 방법이다. 구간합을 구할때는 누적합 배열을 이용한다. 누적합이 (1,1)을 기준으로 구해졌으므로, 해당하지 않는 부분을 빼 준 후, 공통 부분의 누적합을 다시 더해주면 된다.(공통된 부분이라 값이 중복으로 빠졌으므로) 누적합과 구간합을 코드로 구현해보자. 아래의 코드를 2중 for문으로 (1,1)부터 마지막 좌표까지 돌면서 수행하면 된다. * 누적합 구하기 sumArr[i][j] = arr[i][j] + sumArr[i - 1][j] + sumArr[i][j - 1] ..