본문 바로가기

전체 글212

인공지능으로 만들어내는 사진은 어떤 원리로 작동하는가 사진에 노이즈를 줄 수 있다면, 반대로 노이즈에서 사진을 만들어 낼 수 있다.랜덤한 픽셀 값들(즉 노이즈)에서 시작해서 점차 그 노이즈를 점진적으로 변형해서 이미지를 만들어내는 것이다.그게 이미지 복원이라고 착각할 수도 있는데 이미지 복원과는 아예 다른 로직이다이미지 복원은 뭐냐. 이미지에 존재했던 정보나 패턴을 기반으로 흐릿하거나 손상된 부분을 원본에 가까운 형태로 돌리는 것이고AI 생성 이미지는 처음부터 아무 정보가 없는 랜덤한 값 즉 노이즈를 시작점으로 점차적으로 의미있는 형태로 만들어 나가는 것.이미지 복원은 애초에 원본 이미지가 있지만 AI 생성 이미지는 원본 이미지가 없다가 AI가 만들어낸다는 점이 다른 점 되시겠다. 이 AI 이미지 생성 과정에서는 각각의 인공지능 모델들이 각 과정을 담당한다.. 2025. 2. 22.
LV2 :: 행렬의 곱셈 https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr function solution(arr1, arr2) { return arr1.map((row, i) => arr2[0].map((_, j) => row.reduce((sum, val, k) => sum + val * arr2[k][j], 0) ) );} 2025. 2. 21.
LV.2 :: 할인 행사 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krfunction solution(want, number, discount) { let answer = 0; // 원하는 제품과 수량을 Map으로 저장 const wantedItems = new Map(); for (let i = 0; i 2025. 2. 21.
LV.2 :: 괄호 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krfunction solution(s) { // 올바른 괄호 문자열인지 확인하는 함수 const isValid = (str) => { const stack = []; const pair = { ')': '(', '}': '{', ']': '[' }; for (const char of str) { if (char in pair) { if (!stack.le.. 2025. 2. 21.
LV.2 :: 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr function solution(k, tangerine) { const countMap = new Map(); // 개수 카운팅 for (const t of tangerine) { countMap.set(t, (countMap.get(t) || 0) + 1); } // 개수를 기준으로 내림차순 정렬 const sortedCounts = [...countMap.values()].sort((a, b) .. 2025. 2. 21.
2025년 1월 개발 회고 서버 사이드 렌더링을 했다..SCSS를 했다..Zoom이라는 라이브러리를 사용해 사진 확대 기능을 구현했다..textSlicer라는 함수를 만들어서 글자 수를 45글자로 제한하는 기능을 구현했다..MUI의 Accordion을 사용해서 여닫히는 컴포넌트를 구현했다..useEffect의 의존성 배열을 손봐서, 다른 탭으로 갔다와도 정보가 사라지지 않게끔 했다if (!isNaN(parsedValue) && parsedValue .filter와 .some을 활용해 배열의 원소들을 비교하고 필터링했다..이상이다... 벌써 내가 1년 4개월차다.. 시간 빠르다............... 2025. 2. 18.
2024년 11월~12월 개발 회고 - lighthouse 개선- 콘솔에 뜨는 에러 없애기 (Next.js의 현 버전과 맞지 않는다거나, map에 key없다거나 등등)- 기본 세팅 입력을 라디오 버튼 클릭 형태로 받아 그걸 JSON형태로 콘솔에 찍기- JSON 형태로 받은 입력 값을 화면에 예쁘게 렌더링하기- 더미데이터로 우선 디자인대로 구현하고 리얼 데이터 집어넣기 2025. 1. 7.
2024년 9월~10월 개발 회고 로직 개선, 오류 해결, 미디어 쿼리만 계속 해서 이번달과 저번달은 진짜 쓸게 거의 없다  태그를 사용해 i18n 라이브러리를 사용하면서도 글자에 색깔 다르게 입히기SEO를 위해 router.push를 Next Link로 바꾸기QRCode 라이브러리를 사용해 링크를 qrcode로 만들기 2024. 10. 31.
LV.2 :: 주식 가격 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krfunction solution(prices) { var answer = []; for (let i = 0; i 2024. 10. 21.
LV.2 :: n^2 배열 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n, left, right) { const result = []; for (let i = left; i 비추천하는 방식. 모든 배열을 다~ 구한 다음에 slice하는 방식인데, 이 경우 필요없는 부분을 너무 많이 구해버려서 런타임 에러가 난다.효율적이지도 않은 코드. 여기서 한참 헤맸는데 방법 자체를 바꿔야 통과할 수 있다.function soluti.. 2024. 10. 21.
LV.2 :: 기능개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krfunction solution(progresses, speeds) { let workingDays = 0; // 일하는데 걸리는 날의 수 let workFinishTime = []; // 일하는데 걸리는 날의 수의 집합 for (let i=0; i= workFinishTime[day+1]) { if (day !== workFinishTime.length - .. 2024. 10. 21.
LV.2 :: 예상 대진표 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n, a, b) { var answer = 0; // a와 b가 같아질 때까지 계속 반복 while (a !== b) { // a와 b를 각각 2로 나눈 몫을 구하고, 반올림 a = Math.ceil(a / 2); b = Math.ceil(b / 2); answer++; // 라운드 카운트 증가 }.. 2024. 10. 21.
LV.2 :: 멀리 뛰기 https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   function solution(n) { const distance = [1, 1, 2]; for (let i = 3; i 2024. 10. 21.
LV.2 :: 영어 끝말잇기 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n, words) { let answer = []; let seenWords = []; // 단어 기록을 위한 배열 for (let i = 0; i 0 && words[i - 1].slice(-1) !== words[i].slice(0, 1)) { answer.push((i % n) + 1); // 1-indexed 사람 번호 .. 2024. 10. 21.
LV.2 :: N개의 최소공배수 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(arr) { let answer = arr[0]; // 첫 번째 값을 초기값으로 설정 for (let i = 1; i 2024. 10. 21.
LV.2 :: 구명보트 function solution(people, limit) { var lifeBoatsCount = 0; let arr = people.filter( x => xa-b); // 구명보트의 제한무게 이상 몸무게가 나가는 사람은 .. 어쩔수없다. 살아남을 인간 무리에서 빼버린다. 그리고 구명보트 제한무게 이하의 몸무게를 가진 사람들만 남기고 오름차순으로 정렬한다. while (arr.length > 0){ // 태울 사람들이 아직 남아 있다면.. if (arr.length > 1) { // 태울 사람들이 2명 이상이라면 if (arr[0] + arr[arr.length-1] https://school.programmers.co.kr/learn/course.. 2024. 10. 21.
LV.2 :: 점프와 순간 이동 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n) { var battery = 0; while (n > 0) { if (n % 2 == 0) { n = n / 2; } // 순간이동 else { battery++; // 점프해야 하는 경우 n = n - 1; } } return battery;} 2024. 10. 21.
LV. 2 :: 카펫 https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(brown, yellow) { var arr = []; for (let i = 1; i 2024. 10. 21.