전체 글 80

2024. 09. 26.(알고리즘 - 문자열 내림차순으로 배치하기)

★ 문제문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.(str은 길이 1 이상인 문자열입니다.)★ 문제 해결 과정1. split로 배열을 쪼깬다.2. sort를 사용하여 기본 배열로 정렬하도록 하고3. reverse를 사용해 그 배열을 역순으로 변경한다.4. join을 사용해 문자열로 넣는다.★ 제출한 문제 답안function solution(s) { return s.split('').sort().reverse().join('');}

2024. 09. 25.(알고리즘 - 약수의 개수와 덧셈)

★ 문제두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.(1 ≤ left ≤ right ≤ 1,000)★ 문제 해결 과정1. left부터 right까지 모든 숫자에 대해 1부터 i까지 나눠 떨어지는 숫자(약수)를 찾는다(i로 나눴을 때 나머지가 0)2. 약수의 개수가 짝수면 더하고, 홀수면 빼도록 한다. 다른 사람들의 답변 중 가장 신기했던건 "약수는 대칭을 이루는데 제곱근만이 자기 자신과 대칭을 이루기 때문에 제곱근이 정수면 약수의 개수가 홀수다." 라는 사실을 이용해서 푼 답변이다.확실히 수학적인 지식이 없어도 풀 수가 ..

아웃소싱 팀프로젝트 피드백 정리

메인페이지- 스켈레톤 ui가 들어갔으면 좋겠다. (로딩시)=> 넥스트 ui 사이트 사용 - 약국 검색 시 자동완성이나 추천검색어가 떴으면 좋겠다.- 글자수 제한, 디바운싱 기술(?)- 검색 시 글자가 돋보기 아이콘에 침범하지 않도록 영역 가르기- 검색 시 지역별 검색/약국명 검색 나눠서 할 수 있도록 분류- 유튜브 비디오 페이로 바꾸고 싶으면 썸네일을 가져와야한다. 마이페이지- 삭제 시 정말 삭제할 건지 물어보기- 프로필 업데이트가 안됨- 프로필 변경 시 입력했을 경우에만 저장하기 버튼 활성화 되도록 하기(기존 id === 변경id, 비활성화되도록)- 프로필 이미지 업로드 시 미리보기로 보여주도록 하기- 프로필 변경 저장안하고 다른 페이지로 가려고 할 때 저장안했는데 정말 나갈건지 묻기- 닉네임에 아무것..

2024. 09. 22.(팀프로젝트 - 아웃소싱03)

1.  문제점DB.json에 새로운 데이터 넣는 부분이 어려웠다. json-server를 사용하여 약국 데이터를 관리하고 있었는데, 평소에는 이미 입력된 데이터 값에서 불러오거나 기본틀이 있던 중에 추가를 해보다보니 새로운 데이터를 넣는데 어려움을 겪었다.2. 해결을 위한 방안처음에는 json에 저장도 안되고 데이터 형식에 문제가 있어 못불러온다는 오류가 계속 떠 일일히 기본적인 틀을 이 자료들에 다 추가를 하고 난 다음에 거기에 데이터를 입력해야하나 고민을 하다. 아예 객체형식으로 추가를 시키면 문제가 해결되겠다는 생각을 하게되었다. 3. 해결코드//댓글 삽입을 위한 코드const handleAddComment = async () => { if (!userId) { alert('로그인 후..

2024. 09. 19.(팀 프로젝트 - 아웃소싱02)

내 담당은 아니였지만 다 같이 해결하기 위해 고민하고 해결했던 과정이 가장 인상깊게 남아 오늘의 트러블 슈팅으로 기록을 남기게 되었다.추후에 나도 아래 방법을 사용하여 지도 마커를 표시하는데 도움이 되었다.1. 문제점이번에 서치페이지에서 카카오맵 api를 이용하여 지도를 불러오게 되었는데 아래 사진처럼 자세히 보기를 눌렀을 때 자세히 보기 아래에 하얀박스가 생성되어 보이는 문제점이 발견되어 모든 팀원들과 함께 고민하였다.개발자 도구를 사용해 해당 코드부분을 확인해보았으나, vscode입력하지 않은 코드임에도 나타나는 것이 확인되었다.카카오맵 api 공식문서를 보니 저 하얀박스는 "인포윈도우"라는 것인데 원래에는 저 위치에 말하고 싶은 정보를 넣게 하기 위해 쓰이는 박스이다. 입력을 하지 않았는데도 나타나..

2024. 09. 11.(개별과제02)

1.  문제회원가입까지는 넘어갔으나, 로그인이 되지않는 상태였다. 로컬스토리지에 저장까지 잘 되는 것 같은데 오류가 있는 코드는 아니여서 이해가 안되었었다.//처음 작성해본 코드const handleLogin = async (formData) => { try { // 로그인 API 호출 const response = await login(formData); if (response) { // 프로필 정보를 가져와서 사용자 상태를 업데이트 const userProfile = await getUserProfile(response.token); setUser(userProfile); // 로그인 성공 시 홈으로 이동 ..

2024. 09. 10.(알고리즘 - 수박수박수)

★ 문제길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.(n은 길이 10,000이하인 자연수입니다.)★ 문제 해결 과정간단하게 생각하면 n의 짝수에는 '수'라는 단어가 홀수에는 '박'이라는 단어가 들어가면 된다.for문과 if문을 사용하여 문제를 풀었다.★ 제출한 문제 답안function solution(n) { var answer = ''; for(i=0; i

2024. 09. 09.(개별과제 01 useEffect)

1. 문제개별 과제를 하던 중 로그인 하지 않은 사용자를 로그인 페이지로 가게 하기 위해 useEffect hook을 사용하였다.useEffect는 사이드 이펙트를 처리하기 위한 hook인데 사이드 이펙트는 컴포넌트 렌더링 이외에 발생하는 모든 작업을 의미한다.즉 리랜더링이 될 때마다 특정작업을 시행할 수 있도록 하는 hook이다.useEffect는 () => {} 와 [] 로 구성되어 있는데의존성 배열은 useEffect가 실행될 조건이 들어간다고 보면 된다.처음에는 아래와 같이 코드를 짰다. useEffect(() => { if (!user) { navigate('/login'); } }, []); 위와 같이 의존성 배열이 비어있으면 컴포넌트가 처음 마운트될 때만 한 번 실..

2024. 09. 06.(알고리즘 - 가운데 글자 가져오기)

★ 문제단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.(s는 길이가 1 이상, 100이하인 스트링입니다.)★ 문제 해결 과정우선 문자의 가장 가운데를 반환하여야 하는데, length를 절반으로 나누는 방법을 써야겠다는 생각이 들었다.하지만 문자의 길이가 홀수였을 때 짝수였을 때 반환하는 값의 수가 다르므로 홀수/ 짝수를 나누어서 코드를 작성해야겠다고 생각했다.★ 제출한 문제 답안function solution(s) { const length = s.length; if (length % 2 === 1) { return s[Math.floor(length / 2)]; } else { ..

카테고리 없음 2024.09.09

2024. 09. 05. (팀프로젝트 - startify 05)

수파베이스로의 연결이제 모든 기능을 구현하였으니 자료들을 수파베이스로 연결하기만 하면 되었는데 작성버튼을 클릭을 하였을 때 자료가 가야하기 때문에우선 버튼을 만들었다. navigate(-1)}>취소 등록 취소버튼은 작성을 하고 싶지않을 때 바로 전 화면으로 돌아가게 한 것이고, 등록버튼이 클릭을 하였을 때 수파베이스로 자료가 보내지도록 하였다. const handleSubmit = async () => { const fields = [ { value: postTitle, message: "제목을 입력해 주세요." },..